You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将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数据库")

关键说明

  1. 修复连接字符串:

    • 移除了DBQ=后的多余空格,避免ODBC连接报错
    • 使用f-string格式化连接URL,确保urllib.parse.quote_plus正确执行编码,处理连接字符串中的特殊字符
  2. 列表转DataFrame:

    • 必须指定与Access目标表完全一致的列名,否则会导致字段不匹配
    • 如果Access中的日期列是日期类型,可将date字段转换为datetime格式:date = pd.to_datetime(row[2]),确保数据类型兼容
  3. 写入数据库参数:

    • if_exists='append':在已有表中追加数据,适合持续导入交易记录
    • index=False:禁止将DataFrame的索引列写入数据库,避免生成多余字段
  4. 注意事项:

    • 确保Access数据库中已创建对应表,表结构需与DataFrame的列名、数据类型匹配
    • 运行脚本前需确认已安装pyodbc库(若未安装可执行pip install pyodbc)

内容的提问来源于stack exchange,提问作者Suvechha Bhadra

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 12:32:54