如何将Python生成的列表导入Microsoft Access?求脚本协助
如何将Python生成的列表导入Microsoft Access?
完善后的完整脚本
以下是修复数据库连接并实现列表导入Access的完整代码:
import csv import urllib import pandas as pd from sqlalchemy import create_engine FILE = 'Sample.csv' def finance_manager(file): sum_amount = 0 # 避免使用内置关键字sum作为变量名 transactions = [] with open(file, mode='r') as csv_file: csv_reader = csv.reader(csv_file) header = next(csv_reader) for row in csv_reader: # 提取名称、日期、金额 name = row[1] amount = float(row[3]) date = row[2] transaction = (name, date, amount) sum_amount += amount transactions.append(transaction) print(f"本月交易总金额为 {sum_amount}") print(' ') return transactions # 获取交易列表 transaction_list = finance_manager(FILE) # 配置Access数据库连接 access_string = ( r"DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};" r"DBQ=C:\Users\User1\Documents\DatabaseSample.accdb" # 移除DBQ后的空格,避免连接报错 ) # 正确格式化连接URL,使用f-string执行URL编码 cnnurl = f"access+pyodbc:///?odbc_connect={urllib.parse.quote_plus(access_string)}" acc_engine = create_engine(cnnurl) # 将列表转换为DataFrame,需确保列名与Access表的列名完全匹配 # 假设Access数据库中有名为`Transactions`的表,列依次为`Name`, `TransactionDate`, `Amount` df = pd.DataFrame(transaction_list, columns=['Name', 'TransactionDate', 'Amount']) # 将数据写入Access数据库 # if_exists参数可选:append(追加数据)、replace(替换表)、fail(表存在则报错,默认) df.to_sql('Transactions', con=acc_engine, if_exists='append', index=False) print("数据已成功导入Access数据库")
关键说明
修复连接字符串:
- 移除了
DBQ=后的多余空格,避免ODBC连接报错 - 使用f-string格式化连接URL,确保
urllib.parse.quote_plus正确执行编码,处理连接字符串中的特殊字符
- 移除了
列表转DataFrame:
- 必须指定与Access目标表完全一致的列名,否则会导致字段不匹配
- 如果Access中的日期列是日期类型,可将
date字段转换为datetime格式:date = pd.to_datetime(row[2]),确保数据类型兼容
写入数据库参数:
if_exists='append':在已有表中追加数据,适合持续导入交易记录index=False:禁止将DataFrame的索引列写入数据库,避免生成多余字段
注意事项:
- 确保Access数据库中已创建对应表,表结构需与DataFrame的列名、数据类型匹配
- 运行脚本前需确认已安装
pyodbc库(若未安装可执行pip install pyodbc)
内容的提问来源于stack exchange,提问作者Suvechha Bhadra
相关产品推荐
相关产品推荐

