将变量绑定到 Pandas.read_sql 的 SQLAlchemy 查询

Binding variables to SQLAlchemy query for Pandas.read_sql

是否可以将变量绑定到 Pandas.read_sql 语句中使用的 SQLAlchemy 查询?

在 WHERE 子句中使用 %s 不起作用,cx_Oracle 的文档指出:

cursor.execute('SELECT * FROM employees WHERE department_id=:dept_id)

直接使用 cx_Oracle 驱动程序在 Pandas 中已被弃用,这不是一个可行的选择。

我有一个组列表,我需要遍历 WHERE 语句,因为 SELECT * 内存太大,无法在单台 PC 上处理。

示例:

SELECT * FROM DUAL WHERE GROUP_NAME = %s

Returns 这个错误:

(cx_Oracle.DatabaseError) ORA-00911: invalid character ... WHERE GROUP_NAME = %s

如您所见,here, cx_Oracle.paramstyle is named not format. According to PEP 249 您必须对 named 使用 :name 语法 paramstyle:

import pandas as pd
sql = '''
 SELECT *
 FROM DUAL
 WHERE GROUP_NAME = :name
'''
df = pd.read_sql(sql, params={'name': the_name_you_want})