我是 SQL 新手,正在研究如何編寫(xiě)干凈/高效的 SQL 命令。我正在使用 Python 中的 sqlite3 包,并且我正在嘗試使用問(wèn)號(hào)替換與 executemany() 函數(shù)相結(jié)合來(lái)編寫(xiě)高效的命令。我見(jiàn)過(guò)這樣的例子: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()我想知道是否可以使用類(lèi)似的語(yǔ)法來(lái)創(chuàng)建/刪除表: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 中嘗試的可能嗎?有沒(méi)有一種傳統(tǒng)的方法來(lái)做我正在嘗試的事情?謝謝!更新:為了驗(yàn)證問(wèn)題不在于executemany()函數(shù),我嘗試了:table = "MajorInfo"cur.execute("DROP TABLE IF EXISTS ?;", table)conn.close()并得到了一個(gè)sqlite3.OperationalError: near "?": syntax error. 我在想那個(gè)?替換可能僅限于在INSERT INTO和SELECT命令中使用。
1 回答

牧羊人nacy
TA貢獻(xiàn)1862條經(jīng)驗(yàn) 獲得超7個(gè)贊
SQLite 的語(yǔ)句DROP TABLE
不接受括號(hào)中的參數(shù)。此外,它不接受多個(gè)參數(shù),因此不幸的是,您想要的很可能是不可能的。
該DROP TABLE
語(yǔ)句定義為:
添加回答
舉報(bào)
0/150
提交
取消