如何使用 SQLAlchemy (1.3.18) 与 Python (3.8.3) 连接我的 Sybase 数据库?
How to connect my Sybase Database using SQLAlchemy (1.3.18) with Python (3.8.3)?
我正在使用带有 SQLAlchemy 1.3.18 库的 SQL 服务器,感谢 fast_executemany = True,它现在比以前更快了。
我必须使用 Sybase 数据库创建 link。我遇到以下错误:
TypeError : Invalid argument(s) 'fast_executemany' sent to create_engine(),using configuration SybaseDialect_pyodbc/QueuePool/Engine.
这对我来说是个问题,因为我想要快速连接并在我的 db.But 上快速写入,即使我从方法中删除这些参数,我也会遇到以下错误:
sqlalchemy.exc.OperationnalError : (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,但 external dialect 支持。
请注意,您需要为 ASE 使用 SAP 的 ODBC 驱动程序; FreeTDS ODBC 不适用于 fast_executemany.
经过多次搜索,我找到了适合我的东西。
你必须像 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(connexion_string)
对于那些将来的人,这就是我在 Windows 上解决问题的方法:
获取 ODBC dsn 路径:开始>control_panel>admin_tools>ODBC_Data_source(64 位)>
此处有 2 个选项:检查系统 DSN 选项卡。你可能会看到类似 'prototype' 和 SQL Anywhere 17 Driver 的东西。
或者您必须在 File Dsn
> 添加 > {select 您的方言} > {浏览以保存文件路径} > 然后单击 Finish
创建自己的 DSN。系统会提示您填写 Sql Anywhere 信息....数据库名称、Uid、PWD 等...
查看 Chad Kenneedy 对设置自定义 ODBC 的回答
- 确保在弄清楚所有问题后测试 Dsn 连接。
完成后,
engine = create_engine("sybase+pyodbc://<DSN_username>:<DSN_password>@<DSN_file_name,eg_prototype>")
我正在使用带有 SQLAlchemy 1.3.18 库的 SQL 服务器,感谢 fast_executemany = True,它现在比以前更快了。
我必须使用 Sybase 数据库创建 link。我遇到以下错误:
TypeError : Invalid argument(s) 'fast_executemany' sent to create_engine(),using configuration SybaseDialect_pyodbc/QueuePool/Engine.
这对我来说是个问题,因为我想要快速连接并在我的 db.But 上快速写入,即使我从方法中删除这些参数,我也会遇到以下错误:
sqlalchemy.exc.OperationnalError : (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,但 external dialect 支持。
请注意,您需要为 ASE 使用 SAP 的 ODBC 驱动程序; FreeTDS ODBC 不适用于 fast_executemany.
经过多次搜索,我找到了适合我的东西。
你必须像 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(connexion_string)
对于那些将来的人,这就是我在 Windows 上解决问题的方法:
获取 ODBC dsn 路径:开始>control_panel>admin_tools>ODBC_Data_source(64 位)>
此处有 2 个选项:检查系统 DSN 选项卡。你可能会看到类似 'prototype' 和 SQL Anywhere 17 Driver 的东西。
或者您必须在 File Dsn
> 添加 > {select 您的方言} > {浏览以保存文件路径} > 然后单击 Finish
创建自己的 DSN。系统会提示您填写 Sql Anywhere 信息....数据库名称、Uid、PWD 等...
查看 Chad Kenneedy 对设置自定义 ODBC 的回答
- 确保在弄清楚所有问题后测试 Dsn 连接。
完成后,
engine = create_engine("sybase+pyodbc://<DSN_username>:<DSN_password>@<DSN_file_name,eg_prototype>")