0

我现在正在使用 python mysql

我有问题这是mysql查询

query = 'SELECT * FROM callerdetail WHERE screenname="1" AND status="0"AND agent ='idd'

我从外部来源获得 idd 但每当我尝试执行此查询时

我收到错误

  File "server.py", line 28
    query = 'SELECT * FROM callerdetail WHERE screenname="1" AND status="0"AND agent ='idd'
                                                                                         ^
SyntaxError: invalid syntax

请帮我解决我可能做错的事情

4

3 回答 3

2

您需要使用查询参数:

query = 'SELECT * FROM callerdetail WHERE screenname="1" AND status="0"AND agent =?'

idd然后在执行查询时传入值:

cursor.execute(query, (idd,))

在 python 中,您不能简单地将变量放在各种字符串之间并希望它进行插值。

要进行常规字符串插值,请使用以下.format()方法

query = 'SELECT * FROM callerdetail WHERE screenname="1" AND status="0"AND agent = "{0}"'.format(idd)

但是你会错过准备语句的数据库查询优化器。如果重复使用,准备好的语句执行起来会更快。

于 2012-09-28T13:45:35.240 回答
0

您正在混合双引号和单引号。

代替...

query = 'SELECT * FROM callerdetail WHERE screenname="1" AND status="0"AND agent = 'idd'

采用...

query = 'SELECT * FROM callerdetail WHERE screenname="1" AND status="0"AND agent = "idd"'

另外, idd 是一个变量吗?如果是你需要做...

query = 'SELECT * FROM callerdetail WHERE screenname="1" AND status="0"AND agent = "'+str(idd)+'"'
于 2012-09-28T13:46:28.260 回答
0

您似乎忘记在进行查询时连接外部变量,

query = 'SELECT * FROM callerdetail WHERE screenname="1" AND status="0"AND agent = "'+idd+'"'
于 2012-09-28T13:47:40.400 回答