在带有驱动程序='SQL + Server'的SQL炼金术中使用fast_executemany = True时出错

时间:2019-07-10 12:51:13

标签: python sql-server sqlalchemy

我正在尝试使用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'

1 个答案:

答案 0 :(得分:0)

您似乎丢失了计算机上的ODBC 13 driver。 尝试安装该文件并再次运行脚本。

或者,尝试交换:

driver1 = 'ODBC+Driver+13+for+SQL+Server'

对于

driver1 = 'ODBC+Driver+17+for+SQL+Server'