如何在Pandas SQL查询中动态传递变量值
如何动态传递变量参数
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
关键字arguments提供参数来使用参数化sql
。数据库适配器将为您完成参数的正确引用,并且代码将较不容易受到SQL注入攻击。(有关不正确引用的非参数化sql可能引起您的麻烦的类型,请参阅Little
Bobby Tables。)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
为参数标记。它们被替换为正确引用的值params
。请注意,正确的参数标记取决于您使用的数据库适配器。例如,MySQLdb
和psycopg2
使用%s
,而sqlite3
和oursql
使用?
。