После поиска до безумия я решил опубликовать здесь вопрос. Я стараюсь создать базу данных 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 установлен на именем (например, форма таблицы). Я не могу заметить здесь синтаксисную ошибку, поэтому я думаю, что проблема должна быть вызвана где -то в системе. Я проверил его на установке Archlinux и Debian, оба опубликовали мне одну и ту же ошибку.
Теперь это вы, вы больше не имею представления, где искать дело.