如何动态传递变量参数
order = 10100
status = 'Shipped'
df1 = pd.read_sql_query("SELECT * from orders where orderNumber =""" +
str(10100) + """ and status = """ + 'status' +""" order by orderNumber """,cnx)
Run Code Online (Sandbox Code Playgroud)
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])
Run Code Online (Sandbox Code Playgroud)
在?以秒sql为参数标记。它们被替换为正确引用的值params。请注意,正确的参数标记取决于您使用的数据库适配器。例如,MySQLdb和psycopg2使用%s,而sqlite3和oursql使用?。
| 归档时间: |
|
| 查看次数: |
2584 次 |
| 最近记录: |