我有点理解它是如何工作的,但是在 WHERE
之后我迷路了。请告诉我以下内容有什么问题,并帮助我了解它的一般作用:
myVariable = cursor.execute("SELECT TARGET_.*, TARGET_, SOFTWARE_TARGET_ WHERE"
"SOFTWARE_TARGET_.SOFTWARE1=%(sw_ID)s AND"
"SOFTWARE_TARGET_.TARGET2=TARGET_.ID", sw_ID=sw_ID))
我不断收到以下错误:
OperationalError: near "%": syntax error
最佳答案
WHERE
和下一个单词之间没有空格;字符串连接不添加空格。第二个字符串末尾的 AND
也是如此:
>>> ("SELECT TARGET_.*, TARGET_, SOFTWARE_TARGET_ WHERE"
... "SOFTWARE_TARGET_.SOFTWARE1=%(sw_ID)s AND"
... "SOFTWARE_TARGET_.TARGET2=TARGET_.ID")
'SELECT TARGET_.*, TARGET_, SOFTWARE_TARGET_ WHERESOFTWARE_TARGET_.SOFTWARE1=%(sw_ID)s ANDSOFTWARE_TARGET_.TARGET2=TARGET_.ID'
在这里使用 """
三重引号多行字符串更容易:
myVariable = cursor.execute("""
SELECT TARGET_.*, TARGET_, SOFTWARE_TARGET_ WHERE
SOFTWARE_TARGET_.SOFTWARE1=%(sw_ID)s AND
SOFTWARE_TARGET_.TARGET2=TARGET_.ID""", {'sw_ID': sw_ID})
请注意,如果您使用的是 sqlite3
,则只能通过 ?
占位符来使用 positional SQL 参数:
myVariable = cursor.execute("""
SELECT TARGET_.*, TARGET_, SOFTWARE_TARGET_ WHERE
SOFTWARE_TARGET_.SOFTWARE1=? AND
SOFTWARE_TARGET_.TARGET2=TARGET_.ID""", (sw_ID,))
Put
?
as a placeholder wherever you want to use a value, and then provide a tuple of values as the second argument to the cursor’sexecute()
method. (Other database modules may use a different placeholder, such as%s
or:1
.)
关于python - 在 Python 中查询的语法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28866444/