为什么命名参数“未定义”?

时间:2019-06-14 01:09:36

标签: python-3.x sqlite

尝试在简单的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

1 个答案:

答案 0 :(得分:0)

execute查询的secon参数是字典。键是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())