错误消息' sql执行失败...期待字符串,unicode或缓冲区对象'尝试使用cx_Oracle将Python字符串变量传递给SQL查询时返回。非常感谢您对此问题的任何帮助,谢谢!
import pandas as pd
import cx_Oracle as ora
var = 'string'
conn = ora.connect('connection_string')
df = pd.read_sql(("SELECT * FROM table WHERE field LIKE '%s'", (var)), conn)
df.head()
答案 0 :(得分:3)
为了避免SQL注入攻击的可能性,您应该在params
关键字参数中传递变量:
df = pdsql.read_sql("""SELECT *
FROM table
WHERE field LIKE %(var)s""", conn, params={'var':'string%',})
答案 1 :(得分:1)
pd.read_sql("SELECT * FROM table WHERE field LIKE '{}'".format(var), conn)
这应该这样做。您试图将元组传递给函数而不是字符串/ unicode对象。