如何解决用Pandas读取Access表的最简单方法是?
我有一个访问数据库名称DB_IMPORT_2020.accdb。它仅包含一个名为DB_IMPORT_2020_PM的表。我一直在努力地尝试将该表导入Pandas。 到目前为止,我一直在做的是:
# define components of our connection string
driver = '{Microsoft Access Driver (*.mdb,*.accdb)}'
filepath = r"C:\Users\corra\Desktop\DB_IMPORT_2020.accdb"
# create a connection to the database
cnxn = pyodbc.connect(driver = driver,dbq = filepath,autocommit = True)
crsr = cnxn.cursor()
# define the components of a query
table_name = 'DB_IMPORT_2020_PM'
# define query
query = "SELECT * FROM {}".format(table_name)
# execute the query
crsr.execute(query)
data = crsr.fetchall()
df = pd.DataFrame(data)
然后我遇到一个熊猫数据框,其中只有一列,每一行都有一个列表的情况。
0
________________________________________________________
0 [86232,2019-09-12,INTERNET,...,N ]
1 [86233,M ]
2 [86234,MEZZO LIBERO,Q ]
3 ...
我觉得这不是正确的方法,而且过于复杂。 有谁知道一种更简单的方法来读取Access with Pandas表中的数据?
这是我通过data = crsr.fetchall()获得的列表
[(86232,datetime.datetime(2019,9,12,0),'INTERNET','A.M Web','Brand_SMX',0.0,'gen','20_FCST','OnLine','dipendente s','Low Rev.','STX','A.M','STORICI','TIER 1',1.0,'ALIMENTARI','04_SRF','SMX','ALTRI','STC','Reservation','Off + On','Online_Res',None,None),(86233,'feb','A. M',(86234,'MEZZO LIBERO','S ITALIA SRL','S ELECTRONICS','OffLine','BO / CI','S Italia Srl','S','BEN BOT','INTERCx','INFORMATICA/FOTOGRAFIA','Offline_Res','INTX',...]
解决方法
使用Access数据库和熊猫的最简单方法是使用sqlalchemy-access方言(我维护)。
有人知道一种更简单的方法来读取Access with Pandas表中的数据吗?
只需使用熊猫的read_sql_table方法:
import pandas as pd
import sqlalchemy as sa
table_name = 'DB_IMPORT_2020_PM'
engine = sa.create_engine("access+pyodbc://@my_accdb_dsn")
df = pd.read_sql_table(table_name,engine)
,
您的数据是list
中的tuples
,您需要按照here的说明在创建数据框时添加列:
df = pd.DataFrame(data,columns = ["col1","col2",...,"coln"])
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。