首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用用于fast_executemany的pyodbc连接到fast_executemany

使用用于fast_executemany的pyodbc连接到fast_executemany
EN

Stack Overflow用户
提问于 2022-05-09 14:09:21
回答 2查看 128关注 0票数 0

我们目前使用一个程序来创建大型数据集并将其写入数据库,但是这个过程可能需要很长时间。我们正在尝试将sqlalchemy中的cursor.fast_executemany = True合并起来,以提高对这些数据库的写入时间。当我试图使用SQLite3和pyodbc创建一个引擎时,我的代码错误出现在这里:

代码语言:javascript
复制
import pandas as pd
from sqlite3 import connect
import pyodbc
from sqlalchemy import create_engine

engine = create_engine('SQLite3 ODBC Driver+pyodbc:///C:\\Users\\Documents\\PythonScripts\\FLR.sosat')

conn = engine.connect()
c = conn.cursor()

我们尝试了许多方法来指定驱动程序和服务器,如下所示:

代码语言:javascript
复制
# conn = pyodbc.connect('DRIVER={SQL Server};'
#                       'SERVER=localhost;'
#                       'DATABASE=C:\\Users\\Documents\\PythonScripts\\FLR.sosat')

由于我们接收上面注释掉的代码中的驱动程序和服务器错误,单个引擎线似乎是最接近工作的。我们已经从http://www.ch-werner.de/sqliteodbc/下载了ODBC驱动程序。

我们收到ArgumentError:无法从字符串解析rfc1738 URL。

对于如何将SQLite3数据库连接到pyodbc以及如何提高写入速度,我们将不胜感激。谢谢!

注意事项.sosat文件是一个使用sqlite3的数据库文件,它应该像任何.db文件一样工作

我们从这里尝试了修复:使用SQLite3 PyODBC连接到PyODBC服务器,这对我们不起作用,我们收到了驱动程序错误: InterfaceError:(‘no 002’,'IM002ODBC驱动程序管理器数据源名称未找到并且没有指定(0) (SQLDriverConnect)的默认驱动程序‘)

EN

回答 2

Stack Overflow用户

发布于 2022-05-09 15:27:44

你想要实现的目标将不会奏效,原因有二:

理由1:

SQLAlchemy不支持pyodbc作为用于SQLite的DBAPI层

理由2:

即使SQLAlchemy确实支持sqlite+pyodbc://,SQLite ODBC驱动程序也必须支持“参数数组”,这是fast_executemany = True用来实现其魔力的一个可选的ODBC特性。并不是所有的ODBC驱动程序都支持fast_executemany = True,如这里所示。使用vanilla进行的快速测试表明,"SQLite3 ODBC驱动程序“不支持它,实际上它使Python解释器崩溃:

代码语言:javascript
复制
crsr.fast_executemany = True
crsr.executemany(
    f"INSERT INTO {table_name} (txt) VALUES (?)", [("foo",), ("bar",)]
)
# Process finished with exit code -1073741819 (0xC0000005)

(错误0xC0000005是“访问冲突”)

票数 1
EN

Stack Overflow用户

发布于 2022-05-09 14:18:04

你试过吗

代码语言:javascript
复制
import sqlite3
db = r'C:\Users\Documents\PythonScripts\FLR.sosat'
conn = sqlite3.connect(db)
print('connection established')
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72173366

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档