PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Truy vấn read_sql trả về khung dữ liệu trống sau khi tôi chuyển các tham số dưới dạng dict trong python pandas

Có, tôi khá tin tưởng rằng vấn đề của bạn là do cố gắng đặt tên cột trong truy vấn của bạn thông qua liên kết tham số (and %(target)s in ('ACT') ) như đã đề cập trong các bình luận.

Điều này dẫn đến truy vấn của bạn giới hạn tập kết quả thành các bản ghi có 'status' in ('ACT') (nghĩa là chuỗi 'trạng thái' có phải là một phần tử của danh sách chỉ chứa chuỗi 'ACT' không?). Tất nhiên, điều này là sai, do đó không có bản ghi nào được chọn và bạn nhận được kết quả trống.

Điều này sẽ hoạt động như mong đợi:

import psycopg2.sql

col_name = 'status'
table_name = 'public.churn_data'
query_params = {'date_from':'201712',
                'date_to':'201805',
                'drform_target':'NPA'
               }

sql_data_sample = """select * 
                     from {0} 
                     where dt = %(date_to)s 
                     and {1} in (%(drform_target)s)
                     ----------------------------------------------------
                     union all
                     ----------------------------------------------------
                     (select * 
                      from {0} 
                      where dt  = %(date_from)s 
                      and {1} in ('ACT') 
                      order by random() limit 50000);"""

sql_data_sample = sql.SQL(sql_data_sample).format(sql.Identifier(table_name), 
                                                  sql.Identifier(col_name))

df_data_sample = pd.read_sql(sql_data_sample,con = cnxn,params = query_params)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Khung dữ liệu ghi vào Postgresql hiệu suất kém

  2. Làm thế nào để viết một ràng buộc liên quan đến số lượng hàng tối đa trong postgresql?

  3. Nhận giá trị nối tiếp mặc định sau khi INSERT bên trong PL / pgSQL

  4. Ruby on Rails:phải xuất hiện trong mệnh đề GROUP BY hoặc được sử dụng trong một hàm tổng hợp

  5. Làm cách nào để chuyển CŨ, MỚI và số nhận dạng để THỰC HIỆN trong một hàm kích hoạt?