Gag*_*gan 3 python sqlalchemy pyodbc
我试图使用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;
Run Code Online (Sandbox Code Playgroud)
但我一直收到这个错误
无法从字符串'DRIVER = {SQL Server}解析rfc1738 URL; SERVER = mymachinename; DATABASE = mydb; UID = sa; PWD = admin1'
我正在使用与sqlSoup.Something这样的连接字符串
db = sqlsoup.SQLSoup(connectionstring)
Run Code Online (Sandbox Code Playgroud)
编辑 我尝试使用来自SqlAlchemy的Automap,它也失败并显示相同的消息
回溯(最近一次调用最后一次):文件"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行,在create 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)文件"C:\ Python27\lib\site-packages\sqlalchemy\engine\url.py",第225行,在_parse_rfc1738_args中"无法从字符串'%解析rfc1738 URL s'"%name)sqlalchemy.exc.ArgumentError:无法从字符串'DRIVER = {SQL Server}解析rfc1738 URL; SERVER = gagan; DATABASE =个人; UID = sa; PWD = admin1;' [以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)
Run Code Online (Sandbox Code Playgroud)
能告诉我这里我做错了什么吗?
编辑 我建议这不是布莱恩所建议的重复的问题的重复.例如,我遵循问题中建议的相同示例
import sqlalchemy as sa
engine = sa.create_engine('mssql+pyodbc://sa:admin1@gagan/persons')
Run Code Online (Sandbox Code Playgroud)
但即使它失败了相同的消息
以下是快照..第一个使用类型为"'mssql + pyodbc:// user:password @ server/database'"的连接字符串

而第二个使用类型为'DRIVER = {SQL Server}的连接字符串; SERVER = gagan; DATABASE = people; UID = sa; PWD = admin1;

谢谢
好的,这似乎解决了这个问题
import urllib
connection_string = "DRIVER={SQL Server};Database=people;SERVER=gagan;UID=sa;PWD=admin1"
connection_string = urllib.quote_plus(connection_string)
connection_string = "mssql+pyodbc:///?odbc_connect=%s" % connection_string
Run Code Online (Sandbox Code Playgroud)