我是SQL的新手,正在研究如何编写干净/高效的SQL命令。
我正在使用Python中的sqlite3软件包,并且试图将问号替换与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
命令中使用。