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

时间:2018-08-10 16:18:55

标签: python pandas oracle11g sqlalchemy cx-oracle

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

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

  

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

在熊猫中不建议直接使用cx_Oracle驱动程序,这不是可行的选择。

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

示例:

SELECT * FROM DUAL WHERE GROUP_NAME = %s

返回此错误:

  

(cx_Oracle.DatabaseError)ORA-00911:无效字符 ... WHERE GROUP_NAME =%s

1 个答案:

答案 0 :(得分:1)

您可以看到herecx_Oracle.paramstylenamed而不是format。根据{{​​3}},对于:name named,您必须使用paramstyle语法:

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