使用Python将dbf转换为sqlite不会填充表

使用Python将dbf转换为sqlite不会填充表,python,sql,dbf,Python,Sql,Dbf,我已经为这个问题挣扎了一个多小时了。我正在尝试使用dbf表创建Sqlite数据库。当我创建一个从dbf派生的记录列表以用作Sqliteexecutemany语句的输入时,Sqlite表将显示为空。当我尝试以交互方式使用Python复制该问题时,Sqlite执行是成功的。从dbf生成的列表在我运行它时被填充-因此问题在于executemany语句 import sqlite3 from dbfpy import dbf streets = dbf.Dbf("streets_sample.dbf"

我已经为这个问题挣扎了一个多小时了。我正在尝试使用dbf表创建Sqlite数据库。当我创建一个从dbf派生的记录列表以用作Sqlite
executemany
语句的输入时,Sqlite表将显示为空。当我尝试以交互方式使用Python复制该问题时,Sqlite执行是成功的。从dbf生成的列表在我运行它时被填充-因此问题在于
executemany
语句

import sqlite3
from dbfpy import dbf

streets = dbf.Dbf("streets_sample.dbf")

conn = sqlite3.connect('navteq.db')

conn.execute('PRAGMA synchronous = OFF')
conn.execute('PRAGMA journal_mode = MEMORY')

conn.execute('DROP TABLE IF EXISTS STREETS')

conn.execute('''CREATE TABLE STREETS
    (blink_id CHAR(8) PRIMARY KEY,
    bst_name VARCHAR(39),
    bst_nm_pref CHAR(2));''')

alink_id = []
ast_name = []
ast_nm_pref = []

for i in streets:
    alink_id.append(i["LINK_ID"])
    ast_name.append(i["ST_NAME"])
    ast_nm_pref.append(i["ST_NM_PREF"])

streets_table = zip(alink_id, ast_name, ast_nm_pref)

conn.executemany("INSERT OR IGNORE INTO STREETS VALUES(?,?,?)", streets_table)

conn.close()

这可能不是唯一的问题,但您希望调用
conn.commit()
将更改保存到SQLite数据库。参考:

这可能不是唯一的问题,但您希望调用
conn.commit()
将更改保存到SQLite数据库。哈利路亚,成功了!啊,多么愚蠢的问题。谢谢你,伯尼。我希望我能接受你的评论作为答案。不客气。如果愿意,您可以删除该问题。我认为这个问题经常出现。不要自责,去找下一个臭虫吧!:-)@伯尼:做一个回答怎么样,这样我们就可以投票,用户1185790就可以接受了?@EthanFurman:好的。谢谢你的意见。