如何在 pandas sql 查询中动态传递变量值
How to pass variable values dynamically in pandas sql query
如何动态传递可变参数
order = 10100
status = 'Shipped'
df1 = pd.read_sql_query("SELECT * from orders where orderNumber =""" +
str(10100) + """ and status = """ + 'status' +""" order by orderNumber """,cnx)
TypeError: 必须是 str,不是 int
尽管我转换为字符串,但出现上述错误有什么想法吗?
是否有其他方式传递参数?
通过 params
keyword argument. The proper quotation of arguments will be done for you by the database adapter and the code will be less vulnerable to SQL injection attacks. (See Little Bobby Tables 提供参数来使用参数化 sql 来举例说明不正确引用的问题,非参数化 sql 会让您陷入困境。)
order = 10100
status = 'Shipped'
sql = """SELECT * from orders where orderNumber = ?
and status = ? order by orderNumber"""
df1 = pd.read_sql_query(sql, cnx, params=[order, status])
sql
中的?
是parameter markers。它们被 params
中正确引用的值替换。请注意,正确的参数标记取决于您使用的数据库适配器。例如,MySQLdb
和psycopg2
使用%s
,而sqlite3
和oursql
使用?
。
如何动态传递可变参数
order = 10100
status = 'Shipped'
df1 = pd.read_sql_query("SELECT * from orders where orderNumber =""" +
str(10100) + """ and status = """ + 'status' +""" order by orderNumber """,cnx)
TypeError: 必须是 str,不是 int
尽管我转换为字符串,但出现上述错误有什么想法吗?
是否有其他方式传递参数?
通过 params
keyword argument. The proper quotation of arguments will be done for you by the database adapter and the code will be less vulnerable to SQL injection attacks. (See Little Bobby Tables 提供参数来使用参数化 sql 来举例说明不正确引用的问题,非参数化 sql 会让您陷入困境。)
order = 10100
status = 'Shipped'
sql = """SELECT * from orders where orderNumber = ?
and status = ? order by orderNumber"""
df1 = pd.read_sql_query(sql, cnx, params=[order, status])
sql
中的?
是parameter markers。它们被 params
中正确引用的值替换。请注意,正确的参数标记取决于您使用的数据库适配器。例如,MySQLdb
和psycopg2
使用%s
,而sqlite3
和oursql
使用?
。