Почему именованный параметр не определен? - PullRequest
0 голосов
/ 14 июня 2019

Попытка использовать именованный параметр в простом запросе 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 голосов
/ 14 июня 2019

Вторым аргументом запроса на выполнение является словарь. Ключ - это именованный параметр, используемый в запросе 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())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...