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