python - 在 Python 中查询的语法是什么?

标签 python sqlite python-2.6

我有点理解它是如何工作的,但是在 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,))

引用sqlite3 documentation :

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’s execute() method. (Other database modules may use a different placeholder, such as %s or :1.)

关于python - 在 Python 中查询的语法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28866444/

相关文章:

django - IIS 7.5 在几次请求后崩溃(使用 Django + PyISAPIe)

python - 获取 TableView 标题的值

python - 在python中读取TDMS文件如何使用tdms info命令?

swift - 一次对数据库执行一项多项任务

python - SQLAlchemy + pyTelegramBotAPI : SQLite objects created in a thread can only be used in that same thread

multithreading - SQLite 共享缓存多线程读取

python - 在单元测试中使用 pyodbc

python - 使用 numpy 数组时,struct.pack 在 python 2.6 中要慢得多

python - Sharepoint API Python Office365 Rest API 库的身份验证错误

python - 在 Windows 中导入 gensim 模块后出现警告消息