Ok поэтому в основном я пытаюсь обновить существующую SQLite3 базы данных с переменными экземпляра (тип и лвл)Использование переменных экземпляра в обновлении SQLite3?
#Set variables
typ = 'Test'
lvl = 6
#Print Databse
print("\nHere's a listing of all the records in the table:\n")
for row in cursor.execute("SELECT rowid, * FROM fieldmap ORDER BY rowid"):
print(row)
#Update Info
sql = """
UPDATE fieldmap
SET buildtype = typ, buildlevel = lvl
WHERE rowid = 11
"""
cursor.execute(sql)
#Print Databse
print("\nHere's a listing of all the records in the table:\n")
for row in cursor.execute("SELECT rowid, * FROM fieldmap ORDER BY rowid"):
print(row)
Как ошибки я получаю
sqlite3.OperationalError: no such column: typ
Теперь я в основном знаю проблему заключается в том, что моя переменная вставлена с неправильным синтаксисом, но я не могу для жизни меня найти правильный. Он работает со строками и Интсом просто отлично, как это:
sql = """
UPDATE fieldmap
SET buildtype = 'house', buildlevel = 3
WHERE rowid = 11
"""
Но как только я переключаюсь на переменный он выдает ошибку.
Хорошо звучит многообещающе, я посмотрю! – Syntic
** НИКОГДА не используйте '% s' или' str.format' в командах SQL, переданных в вашу базу данных. Он подвержен SQL-инъекции. – aim100k
@ aim100k Да, мы знаем. Вот почему мы используем ORM вместо жесткого кодирования. Тем не менее, люди, которые в основном заботятся об инъекции, будут делать собственные SQL ORM, кроме использования SQLAlchemy. – dotslash