我正在尝试使用fast_executemany来加快df.to_sql插入速度。 我阅读了文档并将其添加到我的代码中,如下所示:
import pandas as pd
import sqlalchemy
import numpy as np
import random
#connect to database
server = 'Test'
database = 'Test'
driver = 'SQL+Server'
driver1 = 'ODBC+Driver+13+for+SQL+Server'
engine_stmt = ("mssql+pyodbc://@%s/%s?driver=%s" % (server, database, driver))
engine = sqlalchemy.create_engine(engine_stmt, fast_executemany=True)
connection = engine.connect()
当我在不使用fast_executemany
的情况下运行此代码时,它可以工作,但是插入所需的时间相当长。
因此,我想使用该命令,但是在与'SQL+Server'
驱动程序一起使用时出现错误。因此,我尝试根据文档将驱动程序更改为'ODBC+Driver+13+for+SQL+Server'
,但出现以下错误:
def create_connect_args(self, url):
InterfaceError: (pyodbc.InterfaceError) ('IM002', '[IM002] [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified (0) (SQLDriverConnect)')
所以我想这个驱动程序对我不起作用吗?我测试了几种不同的方法,但是唯一有效的方法是'SQL+Server'
答案 0 :(得分:0)
您似乎丢失了计算机上的ODBC 13 driver。 尝试安装该文件并再次运行脚本。
或者,尝试交换:
driver1 = 'ODBC+Driver+13+for+SQL+Server'
对于
driver1 = 'ODBC+Driver+17+for+SQL+Server'