gpt4 book ai didi

python 读取单个 .db 文件作为 pandas 数据帧

转载 作者:行者123 更新时间:2023-12-01 07:40:38 27 4
gpt4 key购买 nike

我正在编写一个工作流程,首先将平面 csv 转换为 .db 文件以进行下游处理。该文件似乎写入正常,但当我尝试再次读取它时,它会抛出错误,指出该表不存在。这是我的代码:

import pandas as pd
import sqlite3

# simulate some data
df=pd.DataFrame({'DATE':['01-01-2000','01-02-2000','01-03-2000','01-04-2000','01-05-2000'],
'A1':[1,1,1,1,1],
'A2':[1,2,3,4,5],
'B':[2,2,3,3,2]})
df.to_csv('my_test.csv', index=False)

# function to write csv to .db file
def pandas_csv_to_db_converter(csvfile, table_name):


df = pd.read_csv(csvfile)
conn = sqlite3.connect(table_name)
df.to_sql(table_name, conn, if_exists='append', index=False)

return

pandas_csv_to_db_converter('my_test.csv', 'my_test.db')

到目前为止一切顺利,我有一个大小相似的 csv 和 .db 文件。所以我想读一下表以确保一切正常。

def pandas_db_reader(db_file):

conn = sqlite3.connect(db_file)
c = conn.cursor()
c.execute("SELECT name FROM sqlite_master WHERE type='table';")
names = [tup[0] for tup in c.fetchall()]
print(names)

table = pd.read_sql_query("SELECT * from {}".format(db_file), conn)
print(table)
conn.close()
return

out_db = 'my_test.db'
pandas_db_reader(out_db)

字符串“my_test.db”在控制台上以列表形式打印,表明它是合法的表,但随后代码抛出错误:

    cur.execute(*args)
sqlite3.OperationalError: no such table: my_test.db

During handling of the above exception, another exception occurred:

cur.execute(*args)
pandas.io.sql.DatabaseError: Execution failed on sql 'SELECT * from my_test.db': no such table: my_test.db

为什么会发生这个错误并不是很直观。我已经看过很多关于如何执行此操作的教程和堆栈溢出问题,但它似乎无法运行。我没有太多使用 sql 的经验,所以任何帮助都会非常有帮助!提前致谢!

编辑:编辑错字:
pandas_csv_to_db_converter('my_test.csv', my_test_db.db) 

现在

pandas_csv_to_db_converter('my_test.csv', 'my_test.db')

最佳答案

您将 db_file 作为 pandas_db_reader() 中的表名传递。您需要将正确的 TABLE_NAME 变量传递给下面的 SQL 查询。

table = pd.read_sql_query("SELECT * from {}".format(TABLE_NAME), conn)

无论出于何种原因( see here )my_test_db.db 都不是有效的表名称。更改 pandas_csv_to_db_converterpandas_db_reader 中的表名称值,即

...
df.to_sql("test", conn, if_exists='append', index=False)
...

...
table = pd.read_sql_query("SELECT * from {}".format("test"), conn)
...

关于python 读取单个 .db 文件作为 pandas 数据帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56737274/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com