考虑使用
cur.fetchall()和
csv模块直接输出查询结果,而无需附加到单个列表(并考虑避免这样做
import pypyodbcimport csv# MS ACCESS DB CONNECTIONpypyodbc.lowercase = Falseconn = pypyodbc.connect( r"Driver={Microsoft Access Driver (*.mdb, *.accdb)};" + r"Dbq=C:tempTemp_DB.accdb;")# OPEN CURSOR AND EXECUTE SQLcur = conn.cursor()cur.execute("SELECt Column1, Column2, FROM Table1");# OPEN CSV AND ITERATE THROUGH RESULTSwith open('Output.csv', 'w', newline='') as f: writer = csv.writer(f) for row in cur.fetchall() : writer.writerow(row)cur.close()conn.close()
另外-在上面,您正在连接到Jet / ACE SQL引擎(MSAccess.exe的对象,不仅限于该程序,但可用于所有Office / Windows程序)
-误称MS Access是一个数据库,但实际上是一个GUI控制台到一个
。或者,对于csv导出,您可以与GUI应用程序交互并运行Access的TransferText()方法以将表/查询导出为文本分隔文件。Python可以打开数据库并使用
win32com模块调用export方法:
import win32com.client# OPEN ACCESS APP AND DATAbaseoApp = win32com.client.Dispatch("Access.Application")oApp.OpenCurrentDatabase('C:tempTemp_DB.accdb')# EXPORT TABLE TO CSVacExportDelim = 2oApp.DoCmd.TransferText(acExportDelim, None, "Table1", 'Output.csv'), True)oApp.DoCmd.CloseDatabaseoApp.QuitoApp = None
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)