gpt4 book ai didi

python - 使用 Access ODBC 的 pyodbc fast_executemany 会使 Python 解释器崩溃

转载 作者:行者123 更新时间:2023-12-01 09:30:37 28 4
gpt4 key购买 nike

我正在尝试在 MS Access 数据库中生成并插入许多 (>1.000.000) 行。对于这一代,我使用 numpy 函数,因此我尝试使用 python Access 数据库。我从 pyodbc 开始:

import numpy as np
import pyodbc as db
connection_string = "Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=C:/Users.../DataCreation.accdb;"
connection = db.connect(connection_string)
cur = connection.cursor()

k = 0
numberofdatasets=1000

for l in range(50):
params=np.empty(numberofdatasets, dtype=[('valnr', int),('val', float)])

for j in range(numberofdatasets):
params[j]= (k, somevalue generated with a numpy function)
k=k+1

params = np.array(params).tolist()
cur.executemany("INSERT INTO DataFinal VALUES (1,?,1,?);", params)

connection.commit()

connection.close()

这可行,但需要很长时间才能对我有用。我计时了,问题是

cur.executemany

我搜索了互联网并找到了 fast_executemany 标志。但是当我添加该行

cur.fast_executemany = True

我的内核死了。有人知道为什么吗?我正在使用 64 位 Windows 10、Python 3.6、Spyder 3.2.8 和 MS Access 2016。请不要建议不使用 MS Access,我知道有更有效的数据库可以做到这一点,但现在这就是我的全部可以使用。我也知道,首先生成 numpy 数组,然后将其转换为列表可能不是最好的。我的下一个尝试是turbodbc及其功能

 cursor.executemanycolumns

但这引发了驱动程序的错误,因此我认为这是一个不同的问题。感谢任何帮助,但也许我应该补充一点,我刚刚开始使用 Python 与数据库连接,我更喜欢至少理解一点问题,而不仅仅是复制一些神秘代码:) 谢谢。

最佳答案

pyodbc fast_executemany 功能使用称为“参数数组”的 ODBC 机制。并非所有 ODBC 驱动程序都支持参数数组,显然 Microsoft Access ODBC 驱动程序不支持参数数组。正如 pyodbc Wiki 中提到的

Note that this feature ... is currently only recommended for applications running on Windows that use Microsoft's ODBC Driver for SQL Server.

关于python - 使用 Access ODBC 的 pyodbc fast_executemany 会使 Python 解释器崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50002917/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com