无法将一个表复制到另一个表?

时间:2012-12-11 01:54:41

标签: python sql database sqlite

我正在使用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表,但表中没有数据。我无法找出数据没有复制到新表的原因。有人可以帮我这个吗?

1 个答案:

答案 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()