我正在使用带有SQLAlchemy 1.3.18库的SQL Server,由于fast_executemy=True,它现在比以前更快了。
我必须与Sybase数据库建立链接。我有以下错误:
类型错误:使用配置SybaseDialect_pyodbc/QueuePool/engine,发送到create_engine((的参数"fast_executemony"无效。
这对我来说将是一个问题,因为我想要一个快速连接,同时在我的数据库上快速写作。但是,即使我从方法中删除了这些参数,我也会出现以下错误:
sqlalchemy.exc.OperationalError:(pyodbc.OperationnalError(
这里是代码:
engine = sqlalchemy.create_engine(con['sql']['connexion_string'])
带con['sql']['connexion_string'] = "sybase+pyodbc://<user>:<password>@server_name/[db_name]driver=ODBC Driver 13 for SQL Server"
我认为它来自驱动程序(也许我错了(,但我不知道是哪一个,在文档中,我知道我们必须使用pyodbc,所以ODBC驱动程序。
内部sybase方言不支持fast_executemany,但外部方言支持。
请注意,您将需要为ASE使用SAP的ODBC驱动程序;FreeTDS ODBC无法与fast_executemony配合使用。
所以经过多次搜索,我发现了一些对我有用的东西。
你必须像odbc连接一样写作:
params = (
"DRIVER = "+driver+";"
"SERVER = "+server+";"
"DATABASE = "+database+";"
"PORT = "+port+";"
"UID = "+user+";"
"PWD= "+password+";"
params = urllib.parse.quote_plus(params)
其中params是您的odbc连接。
然后这样做:
connexion_string = 'sybase+pyodbc:///?odbc_connect = %s'%params)
有了这个连接字符串,您就可以执行sqlalchemy.create_engine(连接字符串(
对于未来的用户,这就是我在Windows:上解决问题的方法
获取ODBC dsn路径:start>control_panel>admin_tools>ODBC_数据源(64位(>这里有两个选项:检查系统DSN选项卡。您可能会看到类似"prototype"的SQL Anywhere 17驱动程序。或者您必须在File Dsn
>下创建自己的DSN;添加>{选择您的方言}>{浏览以保存文件路径}>然后单击CCD_ 3。系统将提示您填写Sql Anywhere信息。。。。数据库名称、Uid、PWD等。。。查看Chad Kenneedy对设置自定义ODBC Pyodbc错误的回答找不到数据源名称,也没有默认的驱动程序指定的悖论
- 确保在弄清楚所有内容后测试Dsn连接
一旦完成,
engine = create_engine("sybase+pyodbc://<DSN_username>:<DSN_password>@<DSN_file_name,eg_prototype>")