首页 文章

PyOdbc无法连接到SQL Server实例

提问于
浏览
2

我试图使用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 = 解析rfc1738 URL; SERVER = mymachinename; DATABASE = mydb; UID = sa; PWD = admin1'

我正在使用与sqlSoup.Something这样的连接字符串

db = sqlsoup.SQLSoup(connectionstring)

Edit 我尝试使用SqlAlchemy中的Automap,它也失败并显示相同的消息

Traceback(最近一次调用最后一次):文件“C:\ Sandbox \ Python scripts \ BumpValues \ newConnectivityTest.py”,第7行,在engine = create_engine中(“DRIVER = ; 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 = 解析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)

能告诉我这里我做错了什么吗?

Edit 我建议这不是布莱恩所暗示的问题的副本 . 例如,我遵循问题中建议的相同示例

import sqlalchemy as sa
engine = sa.create_engine('mssql+pyodbc://sa:admin1@gagan/persons')

但即使它失败了相同的消息

以下是快照..第一个使用类型为“'mssql pyodbc:// user:password @ server / database'”的连接字符串

enter image description here

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

enter image description here

谢谢

2 回答

  • 1

    好的,这似乎解决了这个问题

    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
    
  • 5

    Windows生态系统中还有其他驱动程序,您可以尝试其他2个:)

    实际上有两个或三个由Microsoft编写和分发的SQL Server驱动程序:一个称为“SQL Server”,另一个称为“SQL Native Client”和“SQL Server Native Client 10.0” . DRIVER = ; SERVER = cloak; DATABASE = test; UID = user; PWD = password DRIVER = ; SERVER = dagger; DATABASE = test; UID = user; PWD = password DRIVER = {SQL Server Native Client 10.0}; SERVER = dagger; DATABASE = test; UID = user; PWD = password

    参考:https://code.google.com/p/pyodbc/wiki/ConnectionStrings

    编辑:1

    由于在SQLAlchemy之上编写的SQLSoup,您必须使用以下连接字符串:

    "mssql+pyodbc://sa:admin1@mymachinename/mydb"
    

    参考:http://docs.sqlalchemy.org/en/rel_0_8/dialects/mssql.html#module-sqlalchemy.dialects.mssql.pyodbc

相关问题