Я новичок в SQL и работаю над выяснением того, как писать чистые / эффективные команды SQL.
Я использую пакет sqlite3 из Python и пытаюсь использовать замену вопросительного знака в сочетании с функцией executemany () для написания эффективных команд.
Я видел такие примеры:
with sql.connect("db_file.db") as conn:
cur = conn.cursor()
purchases = [('2006-03-28', 'BUY', 'IBM', 1000, 45.00),
('2006-04-05', 'BUY', 'MSFT', 1000, 72.00),
('2006-04-06', 'SELL', 'IBM', 500, 53.00),
]
cur.executemany('INSERT INTO stocks VALUES (?,?,?,?,?)', purchases)
conn.close()
И мне интересно, могу ли я использовать подобный синтаксис для создания / удаления таблиц:
with sql.connect("db_file.db") as conn:
cur = conn.cursor()
tables = ["MajorInfo",
"CourseInfo",
"StudentInfo",
"StudentGrades"]
cur.executemany("DROP TABLE IF EXISTS (?);", tables)
conn.close()
Приведенный выше код вызывает следующее исключение:
Traceback (most recent call last):
File "sql_test.py", line 4, in <module>
sql1.student_db()
File "/acmeshare/jastern/byu_vol2/SQL1/sql1.py", line 57, in student_db
cur.executemany("DROP TABLE IF EXISTS (?);", tables)
sqlite3.OperationalError: near "(": syntax error
Возможно ли то, что я пытаюсь сделать в SQL? Есть ли обычный способ сделать то, что я пытаюсь сделать? Спасибо!
Обновление:
Чтобы убедиться, что проблема не связана с функцией executemany()
, я попытался:
table = "MajorInfo"
cur.execute("DROP TABLE IF EXISTS ?;", table)
conn.close()
и получил sqlite3.OperationalError: near "?": syntax error
. Я так думаю? замена может быть ограничена использованием только в командах INSERT INTO
и SELECT
.