如何使用SQLAlchemy(1.3.18)和Python(3.8.3)连接Sybase数据库



我正在使用带有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>")

相关内容

  • 没有找到相关文章

最新更新