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

使用sqlalchemy.engine.url.URL为mssql + pyodbc建立连接URL

程毅
2023-03-14
问题内容

我正在尝试通过SQLAlchemy连接到MSSql服务器。这是我的带有伪造凭据的代码( 显然不是我的真实凭据 )。

编码…

credentials = {
'username'  : 'SPOTTER_xyz_ACC',
'password'  : '123Goodbye2016!@#',
'host'      : 'MARYLQLT01',
'database'  : 'LRS_DUS',
'port'      : '1560'}

connect_url = sqlalchemy.engine.url.URL(
    'mssql+pyodbc',
    username=credentials['username'],
    password=credentials['password'],
    host=credentials['host'],
    port=credentials['port'],
    query=dict(service_name=credentials['database']))

engine = create_engine(connect_url)
connection=engine.connect()

这是我得到的.pyodbc错误。

(pyodbc.Error) ('IM002', '[IM002] [Microsoft][ODBC Driver Manager] Data source
name not found and no default driver specified (0) (SQLDriverConnect)')

额外细节

但是,这是很奇怪的…如果建立pyodbc连接并使用Pandas.read_sql,那么我可以毫无错误地获取数据。所以我不明白为什么会出现“
pyodbc”错误?

connection=pyodbc.connect(\
                          'Driver={SQL Server}; \
                          Server=MARYLQLT01; \
                          Database=LRS_DUS; \
                          UID=SPOTTER_xyz_ACC; \
                          PWD=123Goodbye2016!@#')

stmt='select * from PD_SC_All'
df=pd.read_sql(stmt,connection)

然后我可以看到数据框。

那么,(pyodbc.Error)当我尝试连接SQLAlchemy时为什么得到了?

系统信息

Windows 7
SQLAlchemy: 1.1.11
pyodbc: 4.0.16

Python 3.6.1 |Anaconda custom (64-bit)| (default, May 11 2017, 13:25:24) [MSC v.1900 64 bit (AMD64)]
Type "copyright", "credits" or "license" for more information.

IPython 5.3.0 -- An enhanced Interactive Python.
?         -> Introduction and overview of IPython's features.
%quickref -> Quick reference.
help      -> Python's own help system.
object?   -> Details about 'object', use 'object??' for extra details.

问题答案:

如SQLAlchemy文档中所述,用于mssql+pyodbc连接

基于主机名的连接 不是首选 ,但受支持。必须明确指定ODBC驱动程序名称:

engine =

create_engine(“mssql+pyodbc://scott:tiger@myhost:port/databasename?driver=SQL+Server+Native+Client+10.0”)

对于

credentials = {
    'username': 'scott',
    'password': 'tiger',
    'host': 'myhost',
    'database': 'databasename',
    'port': '1560'}

您的陈述

connect_url = sqlalchemy.engine.url.URL(
    'mssql+pyodbc',
    username=credentials['username'],
    password=credentials['password'],
    host=credentials['host'],
    port=credentials['port'],
    query=dict(service_name=credentials['database']))

产生 connect_url

mssql+pyodbc://scott:tiger@myhost:1560?service_name=databasename

您真正需要的是

connect_url = sqlalchemy.engine.url.URL(
    'mssql+pyodbc',
    username=credentials['username'],
    password=credentials['password'],
    host=credentials['host'],
    port=credentials['port'],
    database=credentials['database'],
    query=dict(driver='SQL+Server'))

产生

mssql+pyodbc://scott:tiger@myhost:1560/databasename?driver=SQL+Server


 类似资料:
  • 问题内容: 谁能推荐一些在python中建立ssh连接的东西?我需要它与任何操作系统兼容。 我已经尝试使用pyssh来获取SIGCHLD的错误,我读过这是因为Windows缺少此错误。我尝试过使paramiko正常工作,但是在paramiko和Crypto之间存在错误,以至于每个版本的最新版本都无法协同工作。 Windows计算机上当前使用Python 2.6.1。 问题答案: 请注意,这在Win

  • 假设你有这样一个需求:你在家中有一台 Linux/Unix 设备,可以是路由器、NAS 或者台式机,存有自己常用工具或者数据,想要在自己外出时也能随时访问。那么你现在的目的和我一样了,你所需要的是少许 Linux/Unix 经验以及一台能够从公网访问的中继服务器。我们所需要的技术是通过 SSH 隧道搭建一个反向代理。 配置 在你的 SSH 配置文件中加入这一行 GatewayPorts clien

  • 问题内容: 我正在研究一个Web项目,该项目将部署在运行IIS 7.5和PHP 5.3.8的64位Windows 2008 Server计算机上。系统上的数据库是Microsoft SQL Server 2008 R2。我正在CodeIgniter 2.1.0框架上开发应用程序,但对于将其连接到SQL Server感到有些困惑。 我已经尝试过同时使用MSSQL,ODBC和SQLSRV数据库驱动程序

  • SQLAlchemy 1.4 / 2.0 Tutorial 此页是 SQLAlchemy 1.4/2.0教程 . 上一页: SQLAlchemy 1.4/2.0教程 |下一步: |next| 建立连接-引擎 任何SQLAlchemy应用程序的开始都是一个名为 Engine . 此对象充当连接到特定数据库的中心源,提供工厂和称为 connection pool 对于这些数据库连接。引擎通常是一个只为

  • 设备串口和OBLOQ串口在长时间不进行数据通信后可能会断开连接,通过这条指令可以让设备和OBLOQ之间保持一定频率的数据交换。 请求方式: "|1|3|2000|\r" 或者 "|1|3|-2|\r" 参数: 2000 设置心跳数据发送频率,单位:毫秒,2000表示2秒钟OBLOQ向通信的的设备发送一次数据 -2 参数为负数表示OBLOQ停止发送数据 返回值: "|1|3|\r" Arduino样

  • 问题内容: 我正在学习Android编程,现在已经尝试了几天。我正在编写应该连接到XMPP服务器的Android应用。我一直都在犯同样的错误,并且真的不知道我在做什么错。我已经尝试过使用Google找到的示例代码,但也无法与它们建立连接。 } 这是我得到的错误: 我还检查了防火墙是否允许连接,并尝试连接到hosted.im服务而不是家庭服务器,结果相同。 问题答案: 解决方案是将连接代码放入单独的

  • 我尝试使用db2jcc.jar并成功地建立了与db2的连接,但现在我尝试使用jt400.jar 我尝试使用com.ibm.as400.access.as400JDBCDriver,但无法建立连接。 有人能帮我吗?或者提供一个示例代码,其中连接字符串用jt400.jar连接到db2。

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