当前位置: 首页 > 面试题库 >

使用FreeTDS的Pyodbc连接字符串的SqlAlchemy等效项

岳硕
2023-03-14
问题内容

以下作品:

import pyodbc
pyodbc.connect('DRIVER={FreeTDS};Server=my.db.server;Database=mydb;UID=myuser;PWD=mypwd;TDS_Version=8.0;Port=1433;')

以下失败:

import sqlalchemy
sqlalchemy.create_engine("mssql://myuser:mypwd@my.db.server:1433/mydb?driver=FreeTDS& odbc_options='TDS_Version=8.0'").connect()

上面的错误消息是:

DBAPIError:(错误)(“ 08001”,“ [08001] [unixODBC] [FreeTDS] [SQL
Server]无法连接到数据源(0)(SQLDriverConnectW)”)无无

有人能指出我正确的方向吗?有没有一种方法可以简单地告诉sqlalchemy将特定的连接字符串传递给pyodbc?

请注意: 我想保留此DSN-less。


问题答案:

@Singletoned的示例不适用于SQLAlchemy 0.7.2。从用于连接到SQL
Server
的SQLAlchemy文档中:

If you require a connection string that is outside the options presented above, use the odbc_connect keyword to pass in a urlencoded connection string. What gets passed in will be urldecoded and passed directly.

因此,为了使它起作用,我使用了:

import urllib
quoted = urllib.quote_plus('DRIVER={FreeTDS};Server=my.db.server;Database=mydb;UID=myuser;PWD=mypwd;TDS_Version=8.0;Port=1433;')
sqlalchemy.create_engine('mssql+pyodbc:///?odbc_connect={}'.format(quoted))

这也应适用于Sybase。

注意:在python 3中,urllib模块已拆分为多个部分并重命名。因此,python 2.7中的这一行:

quoted = urllib.quote_plus

必须在python3中更改为这一行:

quoted = urllib.parse.quote_plus


 类似资料:
  • 问题内容: 我想查询从左表中的Id和联接表中的描述在1行上输出的ID。 架构: 示例数据: 因此,我希望输出为: 问题答案: SELECT p.ID PersonID, STUFF( (SELECT ‘;’ + b.description FROM personrole a INNER JOIN role b ON a.roleid = b.id WHERE a.personid = p.id F

  • 我目前正在使用以下连接字符串连接到数据库(数据库与ServerIP在同一台服务器上): 这在asp中使用时连接良好。网(我已经手动创建了dbUserId,并从sql server management studio为其分配了dbUserPassword。dbUserId是数据库“dbName”的所有者) 我在另一台电脑上有一个java swing应用程序,需要连接到同一个数据库。我正在使用sqlj

  • 问题内容: 我正在尝试在Python 3.3(Windows 7-64位)上使用SQLAlchemy(带有pyodbc)连接到SQL Server 2012数据库。我可以使用直接的pyodbc进行连接,但是无法使用SQLAlchemy进行连接。我有用于数据库访问的dsn文件设置。 我像这样直接使用pyodbc成功连接: 对于sqlalchemy,我尝试过: 该方法实际上并没有建立连接并成功,但是如

  • 问题内容: 我突然在我的java-app(使用NetBeans作为IDE)中创建记录器时,突然看到一条警告:“记录器中字符串连接使用效率不高”。 我的原始代码是 但是NetBeans建议将此代码转换为模板(“模板”在这里意味着什么?),并提供以下代码: 这两种串联方式有什么不同,尽管我从未使用过后者。 干杯。 问题答案: 我会忽略该警告(如果可能,请将其关闭)。串联的效率不是那么低,因为现代编译器

  • 我从不在论坛上提问题,因为我通常可以在互联网上找到答案。 但是,在这种情况下,我不能。 摘要:我可以通过Azure Data Studio和使用FreetDS的tsql使用kerberos身份验证连接和查询数据库。我无法连接到PyODBC。我尝试了几十种不同的配置都没有成功。 我的最终目标是用Python连接到MSSQL server DB。 谢谢你的任何投入。 背景 连接到kerberos身份验

  • 本文向大家介绍sqlalchemy 使用连接,包括了sqlalchemy 使用连接的使用技巧和注意事项,需要的朋友参考一下 示例 您可以使用上下文管理器打开连接(即从池中请求一个连接): 有无,但必须手动将其关闭: