【问题标题】:Why is named parameter 'not defined'?为什么命名参数“未定义”?
【发布时间】:2019-06-14 01:09:36
【问题描述】:

尝试在简单的 sql 查询中使用命名参数。为参数赋值后,参数名称被标记为未定义 (NameError)

相同的查询与位置参数一起工作正常 尝试使用不同参数名称的不同表 直接传递值而不是通过变量

import sqlite3
myConn = sqlite3.connect("testDB.db")
myCursor = myConn.cursor()
myCursor.execute(
    "SELECT CourseName FROM Courses WHERE CourseName =:course",{'English':course})
print(myCursor.fetchone())

我应该只从数据库中检索一行。 相反,我收到以下错误消息

line 14, in <module>
myCursor.execute("SELECT CourseName FROM Courses WHERE CourseName =:course",{'English':course})
NameError: name 'course' is not defined

【问题讨论】:

  • 改用{'course': 'English'}
  • 谢谢,这不是问题,尽管您的评论让我走上了正轨。在该字典中,键应该是引号之间的命名参数,值应该是在代码中其他地方实例化的变量。
  • 它不一定是变量,您也可以使用字符串文字。您是否尝试根据我的评论更改它?

标签: python-3.x sqlite


【解决方案1】:

执行查询的第二个参数是一个字典。键是 SQL 查询中使用的命名参数(它也需要用引号括起来),该键的值是代码中其他地方实例化的变量。

import sqlite3

myConn = sqlite3.connect("testDB.db")
myCursor = myConn.cursor()

query = "SELECT CourseName FROM Courses WHERE CourseName=:course"
test = "English"

myCursor.execute("SELECT CourseName FROM Courses WHERE CourseName =:course",{'course':test})

print(myCursor.fetchone())

【讨论】:

    猜你喜欢
    • 2022-01-04
    • 2020-02-13
    • 2022-11-01
    • 2020-06-24
    • 2018-05-14
    • 2020-02-16
    • 2021-06-12
    • 2021-06-15
    相关资源
    最近更新 更多