【发布时间】:2015-08-08 12:35:56
【问题描述】:
我正在尝试使用 Python 2.7(32 位)在 Windows 7 上使用 pyodbc 版本 3.0.6.、SQLAlchemy 1.0.4 连接到 sql server 实例。我正在使用如下连接字符串
DRIVER={SQL Server};SERVER=mymachinename;DATABASE=mydb;UID=sa;PWD=admin1;
但我不断收到此错误
无法从字符串 'DRIVER={SQL Server};SERVER=mymachinename;DATABASE=mydb;UID=sa;PWD=admin1' 解析 rfc1738 URL
我正在使用带有 sqlSoup 的连接字符串。类似这样的东西
db = sqlsoup.SQLSoup(connectionstring)
编辑 我尝试使用来自 SqlAlchemy 的Automap,它也失败并显示相同的消息
Traceback(最近一次调用最后一次): 文件“C:\Sandbox\Python scripts\BumpValues\newConnectivityTest.py”,第 7 行,在 engine = create_engine("DRIVER={SQL Server};SERVER=gagan;DATABASE=persons;UID=sa;PWD=admin1;") 文件“C:\Python27\lib\site-packages\sqlalchemy\engine__init__.py”,第 386 行,在 create_engine 返回 strategy.create(*args, **kwargs) 文件“C:\Python27\lib\site-packages\sqlalchemy\engine\strategies.py”,第 49 行,在创建中 u = url.make_url(name_or_url) 文件“C:\Python27\lib\site-packages\sqlalchemy\engine\url.py”,第 176 行,在 make_url 返回 _parse_rfc1738_args(name_or_url) _parse_rfc1738_args 中的文件“C:\Python27\lib\site-packages\sqlalchemy\engine\url.py”,第 225 行 “无法从字符串 '%s' 解析 rfc1738 URL”% 名称) sqlalchemy.exc.ArgumentError: 无法从字符串“DRIVER={SQL Server};SERVER=gagan;DATABASE=persons;UID=sa;PWD=admin1;”解析 rfc1738 URL [在 0.4 秒内完成,退出代码为 1] [shell_cmd: python -u "C:\Sandbox\Python scripts\BumpValues\newConnectivityTest.py"]
我的代码如下
from sqlalchemy.ext.automap import automap_base
from sqlalchemy.orm import Session
from sqlalchemy import create_engine
Base = automap_base()
engine = create_engine("DRIVER={SQL Server};SERVER=gagan;DATABASE=persons;UID=sa;PWD=admin1;")
Base.prepare(engine, reflect=True)
usrs = Base.classes.users
print(usrs)
你能告诉我我在这里做错了什么吗?
编辑 我建议这不是 Bryan 建议的问题的重复。例如,我遵循问题中建议的相同示例
import sqlalchemy as sa
engine = sa.create_engine('mssql+pyodbc://sa:admin1@gagan/persons')
但即使它失败并显示相同的消息
这是快照.. 第一个使用“'mssql+pyodbc://user:password@server/database'”类型的连接字符串
而第二个使用类型的连接字符串 'DRIVER={SQL Server};SERVER=gagan;DATABASE=people;UID=sa;PWD=admin1;
谢谢
【问题讨论】:
-
使用连接字符串
mssql+pyodbc://sa:admin1@gagan/persons的代码不会失败并显示与原始错误消息相同的错误消息。使用更新的代码示例仔细检查错误消息并提供更新的消息。 -
我已经更新了这个问题。抱歉,快照花了一些时间。
标签: python sqlalchemy pyodbc