python - 使用 Pandas 读取 Access 表的最简单方法?

标签 python pandas ms-access pyodbc

我有一个 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)
然后我遇到了这样的情况,我有一个 Pandas 数据框,每行有一个列和一个列表。
0
________________________________________________________
0   [86232, 2019-09-12, INTERNET, ... , N ]
1   [86233, 2019-09-12, INTERNET, ... , M ]
2   [86234, 2019-09-12, MEZZO LIBERO, ...  , Q ]
3   ...
我觉得这不是正确的方法,而且过于复杂。
有谁知道用 Pandas 读取 Access 表中数据的更简单方法?
这是我用 data = crsr.fetchall() 得到的列表
[(86232, datetime.datetime(2019, 9, 12, 0, 0), 'INTERNET', 'A.M Web', 'Brand_SMX', 0.0, 'gen', '20_FCST', 'OnLine', 'dipendente s', 'Low Rev.', 'STX', 'A.M', 'INTERNET', 'Brand_SMX', 'dipendente s', 'STORICI', 'TIER 1', 1.0, 'TIER 1', 'ALIMENTARI', '04_SRF', 'SMX', 'ALTRI', 'STC', 'Reservation', 'Off + On', 'Online_Res', 'TIER 1', None, None, None, None),
 (86233, datetime.datetime(2019, 9, 12, 0, 0), 'INTERNET', 'A.M Web', 'Brand_SMX', 0.0, 'feb', '20_FCST', 'OnLine', 'dipendente s', 'Low Rev.', 'STC', 'A. M', 'INTERNET', 'Brand_SMX', 'dipendente s', 'STORICI', 'TIER 1', 1.0, 'TIER 1', 'ALIMENTARI', '04_SRF', 'SMX', 'ALTRI', 'STX', 'Reservation', 'Off + On', 'Online_Res', 'TIER 1', None, None, None, None),
 (86234, datetime.datetime(2019, 9, 12, 0, 0), 'MEZZO LIBERO', 'S ITALIA SRL', 'S ELECTRONICS', 0.0, 'gen', '20_FCST', 'OffLine', 'BO / CI', 'Low Rev.', 'STX', 'S Italia Srl', 'MEZZO LIBERO', 'S', 'BEN BOT', 'STORICI', 'INTERCx', 1.0, 'INTERCx', 'INFORMATICA/FOTOGRAFIA', '04_SRF', 'SMX', 'ALTRI', 'STC', 'Reservation', 'Off + On', 'Offline_Res', 'INTX', None, None, None, None),...]

最佳答案

使用 Access 数据库和 Pandas 的最简单方法是使用 sqlalchemy-access方言(我坚持)。

Does anyone know a simpler way to read data in a table of Access with Pandas?


只需使用 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)

关于python - 使用 Pandas 读取 Access 表的最简单方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63576119/

相关文章:

python - 为什么 DataFrame.nlargest 不对结果进行排序?

python - 如何根据条件(大于或小于)打印出文本文件中的特定行/行

python - 如何将 B 列转置为 DataFrame 中的 y 轴列

python - 从数组中提取元素时出错。 Python

ms-access - MS Access 中的 .ImportXML 命令出错

ms-access - 将 MS-Access 报告拆分为 pdf

database - 是否可以用 if 语句解锁 MS Access 数据库字段?

python - 如何使用初始数据点将曲线拟合到曲线数据集?

python - 过滤列表中与每行 pandas 的条件匹配的第一个元素

python - 从 pandas .mean() 中排除列