【问题标题】:Binding variables to SQLAlchemy query for Pandas.read_sql将变量绑定到 Pandas.read_sql 的 SQLAlchemy 查询
【发布时间】:2019-01-18 07:16:50
【问题描述】:

是否可以将变量绑定到 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

返回此错误:

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

【问题讨论】:

    标签: python pandas oracle11g sqlalchemy cx-oracle


    【解决方案1】:

    如您所见 herecx_Oracle.paramstylenamed 而不是 format。根据PEP 249,您必须使用: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})
    

    【讨论】:

    • 传递参数值列表而不是一个值的语法是什么?
    猜你喜欢
    • 2015-08-15
    • 2020-11-03
    • 1970-01-01
    • 1970-01-01
    • 2021-08-02
    • 2011-08-24
    • 2022-01-18
    • 2021-11-04
    • 1970-01-01
    相关资源
    最近更新 更多