【发布时间】:2020-08-23 19:41:50
【问题描述】:
我有一个 pandas 数据框,我想插入到 sqlite3 数据库中(用 python 3.6+ 编写)。
但是,当我将数据插入表中时,它显示为一个文本文件,其中的文本是连续写入的。我尝试将数据库文件中的文本复制/粘贴到 Stackoverflow 上的此处,但 Stackoverflow 说尝试提交时出错。作为一个备用数据点,当我打开 Sublime Text 并从数据库中复制/粘贴文本时,唯一粘贴的文本是:
SQLite 格式 3
所以,我在下面粘贴了数据库中文本的屏幕截图。看起来 Stackoverflow 不喜欢那些不寻常的问号字符。
我将 pandas 数据帧传递到 sqlite3 的代码如下。请注意,我只是在此处创建表(尚未插入数据)并且仍然获得此表型。
cols = ["name", "website", "phone", "address", "city"]
df = pd.DataFrame(columns = cols)
conn = sqlite3.connect('TestDB2.db')
c = conn.cursor()
c.execute("""
CREATE TABLE STUDENTS(
id integer PRIMARY KEY,
name text,
age integer,
city text,
country text
)""")
conn.commit()
dfObj.to_sql('STUDENTS', conn, if_exists='replace', index = False)
pandas 数据框在 python 中和写入 excel 文件时看起来不错。我是 sqlite3 世界的新手,但熟悉 postgres。任何帮助将不胜感激!
【问题讨论】:
-
variable text的重复有问题;我还没有测试过 Postgres 中的功能,但是你要么创建大约十几个同名的列,要么创建一个其定义不断被覆盖的列(你可能最终只得到一个类型为“文本”的“变量”列)。 -
截图很不清楚,总体来说screenshots are strongly discouraged。如果有私人信息,请创建一个显示类似行为的示例,而只使用虚拟信息。
-
没有可以提供帮助的示例数据框。如上所述,在私人信息的情况下,使用具有其他相同行为的虚拟信息。另请参阅有关创建 minimal reproducible example 的信息。
-
好的,好建议。我更新了虚拟信息。但是,我无法从数据库中复制/粘贴文本,因为 stackoverflow 不喜欢这些字符。所以,我上传了一张更清晰的截图。
-
sqlite3 数据库不是文本文件。这里的结果是使用文本编辑器打开 sqlite 数据库时得到的结果。使用命令行
sqlite3或一些工具(我最喜欢的DB browser for sqlite)来检查数据库内容。从发布的代码中不清楚dfObj是什么。to_sql用于插入数据。
标签: python database pandas sqlite