我正在使用python将一个表(字典)复制到SQLite中的另一个表(origin_dictionary),这是我对此部分的代码:
def copyDictionaryToOrigin(self):
dropTableQueryStr = "DROP TABLE IF EXISTS origin_dictionary"
createTableQueryStr = "CREATE TABLE origin_dictionary (id INTEGER PRIMARY KEY AUTOINCREMENT, word TEXT, type TEXT)"
syncTableQueryStr = "INSERT INTO origin_dictionary (word, type) SELECT word, type FROM dictionary"
self.cur.execute(dropTableQueryStr)
self.cur.fetchone()
self.cur.execute(createTableQueryStr)
result = self.cur.fetchone()
self.cur.execute(syncTableQueryStr)
result = self.cur.fetchone()
运行此代码后,我可以看到创建了一个origin_dictionary表,但表中没有数据。我无法找出数据没有复制到新表的原因。有人可以帮我这个吗?
答案 0 :(得分:1)
如果您只需要将一个表复制到另一个表,为什么不使用CREATE TABLE ... AS SELECT
?此外,您需要commit()
您的陈述。
只需使用下面的代码,它就应该有效:
import sqlite3
conn = sqlite3.connect(example.db")
cur = conn.cursor()
cur.execute("DROP TABLE IF EXISTS origin_dictionary")
cur.execute("CREATE TABLE origin_dictionary AS SELECT * FROM dictionary")
conn.commit()
conn.close()