使用列访问CSV表格

问题描述 投票:0回答:2

我想将MS Access表转换为CSV。

MS Access表:

enter image description here

Python 2.7:

conn_string = r'DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=' + file1 + ';'
conn = pyodbc.connect(conn_string)
cursor = conn.cursor()

cursor.execute('SELECT * FROM EMP')

with open(csvfile, 'wb') as f:
    writer = csv.writer(f)
    writer.writerows([i[0] for i in cursor.description])
    writer.writerows(cursor)

cursor.close()
conn.close()

但得到意想不到的结果

enter image description here

python python-2.7
2个回答
1
投票

不要将列值写为行,这就是将其字符扩展为单个单元格的内容。要编写标题,请使用:

writer.writerow([i[0] for i in cursor.description])

然后使用writer.writerows()写入实际数据。


1
投票

使用Pandas读取SQL并写入CSV

import pyodbc
import pandas as pd

打开连接

conn_string = r'DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=' + file1 + ';'
conn = pyodbc.connect(conn_string)

将SQl查询结果读入Pandas Dataframe

query = "SELECT * FROM EMP"
dataf = pd.read_sql(query, conn)
conn .close()

保存为CSV

dataf.to_csv('./file_path')
© www.soinside.com 2019 - 2024. All rights reserved.