提取 MS 访问表并将其放入 python 中的数据框中

2023-12-29

我尝试了许多不同的方法来从 Access 中提取数据并将其放入一个整洁的数据框架中。现在我的代码看起来像这样。

from pandas import DataFrame
import numpy as np

import pyodbc
from sqlalchemy import create_engine

db_file = r'C:\Users\username\file.accdb'
user = 'user'
password = 'pw'

odbc_conn_str = 'DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=%s;UID=%s;PWD=%s' % (db_file, user, password)
conn = pyodbc.connect(odbc_conn_str)

cur = conn.cursor()


qry = cur.execute("SELECT * FROM table WHERE INST = '796116'")
dataf = DataFrame(qry.fetchall()) 
print(dataf)

这会将数据放入数据框中,但第二行是一个列表。我需要将下面的代码片段放在 4 个单独的列中,而不是 2 个带有列表的列中。

0   (u'RM257095', u'c1', u'796116')
1   (u'RM257097', u'c2', u'796116')
2   (u'RM257043', u'c3', u'796116')
3   (u'RM257044', u'c4', u'796116')

我使用过像 kdb_utils 这样的模块,它有一个 read_query 函数,它从 kdb 中提取数据并将其分成一个整洁的数据帧。是否有类似的访问或其他方式来提取数据并将其整齐地放入数据框中?


考虑使用 pandas 的直接read_sql https://pandas.pydata.org/pandas-docs/stable/generated/pandas.read_sql.html method:

import pyodbc
import pandas as pd
...
cnxn = pyodbc.connect('DRIVER={{Microsoft Access Driver (*.mdb, *.accdb)}};DBQ=' + \
                      '{};Uid={};Pwd={};'.format(db_file, user, password)

query = "SELECT * FROM mytable WHERE INST = '796116'"
dataf = pd.read_sql(query, cnxn)
cnxn.close()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

提取 MS 访问表并将其放入 python 中的数据框中 的相关文章

随机推荐