为了账号安全,请及时绑定邮箱和手机立即绑定

问号“?” 替换 SQL 中的 CREATE TABLE、DROP TABLE - 限制

问号“?” 替换 SQL 中的 CREATE TABLE、DROP TABLE - 限制

慕村225694 2021-08-11 20:00:39
我是 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命令中使用。
查看完整描述

1 回答

?
牧羊人nacy

TA贡献1862条经验 获得超7个赞

SQLite 的语句DROP TABLE不接受括号中的参数。此外,它不接受多个参数,因此不幸的是,您想要的很可能是不可能的。

DROP TABLE语句定义为:

//img1.sycdn.imooc.com//6113bc020001095d07050042.jpg

查看完整回答
反对 回复 2021-08-11
  • 1 回答
  • 0 关注
  • 181 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信