cur.fetchall()
およびモジュールを使用して、個々のリストに追加する必要なくクエリ結果を直接出力することを検討してください(また、処理時間を節約するためにcsv
控えることを検討してください)。print
import pypyodbc
import csv
# MS ACCESS DB CONNECTION
pypyodbc.lowercase = False
conn = pypyodbc.connect(
r"Driver={Microsoft Access Driver (*.mdb, *.accdb)};" +
r"Dbq=C:\temp\Temp_DB.accdb;")
# OPEN CURSOR AND EXECUTE SQL
cur = conn.cursor()
cur.execute("SELECT Column1, Column2, FROM Table1");
# OPEN CSV AND ITERATE THROUGH RESULTS
with 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 であると考える誤称です。 console to one . Alternative for your csv export, you can interact with the GUI application and run Access' TransferText() method to export tables/queries to text delimited files. Python はデータベースを開いて、win32com
モジュールで export メソッドを呼び出すことができます:
import win32com.client
# OPEN ACCESS APP AND DATABASE
oApp = win32com.client.Dispatch("Access.Application")
oApp.OpenCurrentDatabase('C:\temp\Temp_DB.accdb')
# EXPORT TABLE TO CSV
acExportDelim = 2
oApp.DoCmd.TransferText(acExportDelim, None, "Table1", 'Output.csv'), True)
oApp.DoCmd.CloseDatabase
oApp.Quit
oApp = None