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

发布于 2021-01-29 15:02:33

如何动态传递变量参数

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

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

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

关注者
0
被浏览
90
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    通过通过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使用?



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看