2012-12-11 66 views
0

我使用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

有没有在字典表的数据? – cobie

+0

是的,字典表中有数据。实际上我可以从sqlite shell成功运行复制命令,但它在python代码中不起作用 –

+3

您是否正在提交事务? –

回答

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() 
相关问题