小编典典

如何在Pandas SQL查询中动态传递变量值

python

如何动态传递变量参数

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

尽管我转换为字符串有任何想法,但遇到了以上错误?

有没有其他的方式来传递参数?


阅读 207

收藏
2021-01-20

共1个答案

小编典典

通过通过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。请注意,正确的参数标记取决于您使用的数据库适配器。例如,MySQLdbpsycopg2使用%s,而sqlite3oursql使用?

2021-01-20