после поиска до безумия, я решил опубликовать вопрос здесь. Я пытаюсь создать базу данных sqlite3, в которой я хотел бы использовать безопасную функцию подстановки переменных функции cursor.execute(SQL, param). Моя функция выглядит следующим образом:
#!/usr/bin/env python3
#-*- coding: utf-8 -*-
import sqlite3
def create():
values = ("data")
sql = "CREATE TABLE IF NOT EXISTS ? ( name TEXT, street TEXT, time REAL, age INTEGER )"
con = sqlite3.connect("database.db")
c = con.cursor()
c.execute(sql, values)
con.commit()
c.close()
con.close()
if __name__ = "__main__":
create()
Я знаю, что первым аргументом должна быть команда sql в виде строки, а вторым аргументом должен быть кортеж значений, которые должны быть заменены, где? находится в строке sql. Однако, когда я запускаю файл, он возвращает следующую ошибку:
$ ./test.py
Traceback (most recent call last):
File "./test.py", line 21, in <module>
create()
File "./test.py", line 14, in create
c.execute(sql, values)
sqlite3.OperationalError: near "?": syntax error
Это также происходит, когда параметру paramstyle присвоено значение named (например, форма :table). Я не могу обнаружить здесь синтаксическую ошибку, поэтому я думаю, что проблема должна быть вызвана где-то в системе. Я протестировал его на установке Archlinux и Debian, и они сообщают мне одну и ту же ошибку.
Теперь дело за вами, так как я уже не знаю, где искать причину.