Python:MySQLdb与查询混淆

时间:2017-01-04 14:02:55

标签: python mysql

我正在尝试从MySQL查询表 在MySQL中 SELECT * FROM TABLE WHERE Item LIKE 'G%'能够查询数据,但SELECT * FROM TABLE WHERE Item LIKE G%不能导致错误1064 在Python中

query = "SELECT * FROM TABLE WHERE Item LIKE %s%% "
data = 'G'
cur.execute(query%(data))

它会返回错误,但如果

则有效
query = "SELECT * FROM TABLE WHERE Item LIKE '%s%%' "

使用'%s'代替%s是正确的方法吗? 浮点数和整数怎么样?如果数据是整数,我应该放int(data)还是float(data)

2 个答案:

答案 0 :(得分:2)

预先构建您的like表达式并参数化查询

query = "SELECT * FROM TABLE WHERE Item LIKE %s"
data = 'G'
cur.execute(query, (data + "%", ))

答案 1 :(得分:0)

更加pythonic的方式可能是使用format

sql_template = 'SELECT * FROM TABLE WHERE Item LIKE {}'
sql_template.format('G%') # 'SELECT * FROM TABLE WHERE Item LIKE G%'

试一试。