我是sqlite3(Python用户)的新手
已经根据以下方法将数据存储在数据库中,但是这次无法正常工作。 INSERT INTO已执行,没有错误报告,但是没有存储在db中。
我在这个网站上搜索了很多这个话题,重点是“不提交”。但是我很确定我正确完成了“提交”并关闭了文件。在执行INSERT操作之后,我可以在数据库中找到带有标题(列名)的表f65,但没有更多数据。 (10列x 4k行)。
关键代码段如下。
df = pd.DataFrame(pd.read_excel(r'/Users/' + username + r'/Documents/working/addf6-5.xlsx', header=0))
df = df.replace('#NUM!', '')
value = chain(reversed(grouplist2), df.values.tolist())
for x in value:
x[4] = str(x[4])
x[7] = str(x[7])
conn = sqlite3.connect('veradb.db')
c = conn.cursor()
c.execute("DROP TABLE IF EXISTS f65")
conn.commit()
c.close()
conn.close()
conn = sqlite3.connect('veradb.db')
c = conn.cursor()
c.execute("CREATE TABLE IF NOT EXISTS f65 ('offer', 'code', 'desc', 'engine', 'cost', 'supplier', 'remark', 'podate', 'empty', 'border')")
c.executemany("INSERT INTO f65 VALUES (?,?,?,?,?,?,?,?,?,?)", value)
conn.commit()
c.close()
conn.close()
更多详细说明:
缓存数据位于addf6-5中,我在grouplist2(这是一个列表)中提取了新数据,并使用chain(reversed(grouplist2), df.values.tolist())
来组合数据。
为什么使用
for x in value:
x[4] = str(x[4])
x[7] = str(x[7])
因为我的pycharm报告“错误绑定参数4-可能不支持的类型。”&“错误绑定参数7-可能不支持的类型。”所以我再次执行STR,尽管默认情况下根据SQLite它们应该是TEXT。
我试图通过
测试“值”for x in value:
x[4] = str(x[4])
x[7] = str(x[7])
print(x)
发现它们可以正确打印。也许这个证明值(清单)是正确的?
有些人可能会怀疑是否在“ CREATE TABLE”语句中缺少属性,我可以说Sqlite为他们提供了TEXT,默认情况下,TEXT不输入任何内容,并且我在其他文件上执行了这些代码即可工作。
期待您的帮助。预先谢谢你。