【问题标题】:Pulling MS access tables and putting them in data frames in python拉取 MS 访问表并将它们放入 python 中的数据框中
【发布时间】:2017-12-01 02:13:22
【问题描述】:

我尝试了许多不同的方法来从 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)

这会将数据放入数据框中,但第二行是列表。我需要将下面的 sn-p 放在 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 中提取数据并将其分离成一个整洁的数据框。是否有类似的访问或其他方式来提取数据并将其整齐地放入数据框中?

【问题讨论】:

  • 试试dataf = DataFrame([tuple(x) for x in qry.fetchall()])

标签: python pandas ms-access pyodbc


【解决方案1】:

考虑使用 pandas 的直接read_sql 方法:

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()

【讨论】:

    猜你喜欢
    • 2021-10-17
    • 2023-03-28
    • 1970-01-01
    • 2012-11-22
    • 1970-01-01
    • 2019-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多