【发布时间】:2017-02-10 16:28:58
【问题描述】:
我有一个简单的连接问题:
有人在我的计算机上安装了正确的 ODBC 驱动程序,到目前为止,我可以使用以下代码连接到我的数据库
import pyodbc
import pandas as pd
import numpy as np
cnxn = pyodbc.connect('DSN=MYDSN')
cnxn.timeout = 3600
cursor = cnxn.cursor()
但是,出于多种原因,我想使用 SQLAlchemy 并使用天真
import sqlalchemy
engine = sqlalchemy.create_engine('DSN=MYDSN')
惨遭失败。
ArgumentError: 无法从字符串 'DSN=MYDSN' 解析 rfc1738 URL
我在这里找不到正确的语法。我也不知道我的数据库的 url。我在这里失去希望了吗?
谢谢!
【问题讨论】:
-
您至少需要提供驱动程序名称。见the docs。
-
@9000 - 很抱歉挑剔,但不是需要提供 驱动程序名称,因为它是 DSN 定义的一部分。 SQLAlchemy 需要的是 dialect+dbapi_provider,例如,
mssql+pyodbc://MYDSN -
@Noobie - 在 Python 本身中建立 pyodbc 连接后,
cnxn.getinfo(pyodbc.SQL_DRIVER_NAME)返回什么? -
该产品似乎不太可能有特定的 SQLAlchemy 方言,因此您可以尝试其中一种现有的方言,看看它是否能给您带来任何乐趣。如果由我决定,我会从
mssql+pyodbc://MYDSN开始。如果做不到这一点,mysql+pyodbc://MYDSN可能值得一试。 Cisco 也可能有一些资源(可能是知识库和/或论坛?)
标签: python sqlalchemy pyodbc