【问题标题】:SQL Server connection - Works in pyodbc, but not SQLAlchemySQL Server 连接 - 适用于 pyodbc,但不适用于 SQLAlchemy
【发布时间】:2018-12-27 00:57:13
【问题描述】:

这是一个相当常见的问题,但即使使用 SO like here 上的答案,我仍然无法连接。

当我设置到pyodbc 的连接时,我可以连接到以下内容:

cnxn = pyodbc.connect('DRIVER={SQL Server Native Client 11.0};SERVER=ip,port;DATABASE=db;UID=user;PWD=pass')
cursor = cnxn.cursor()

cursor.execute("some select query")
for row in cursor.fetchall():
    print(row)

而且有效。

但是要在pandas 中进行.read_sql(),我需要与sqlalchemy 联系。

我已经尝试过托管连接和传递 pyodbc 连接,如下所示:

quoted = urllib.parse.quote_plus('DRIVER={SQL Server Native Client 11.0};Server=ip;Database=db;UID=user;PWD=pass;Port=port;')
engine = sqlalchemy.create_engine('mssql+pyodbc:///?odbc_connect={}'.format(quoted))
engine.connect()

我已经尝试了SERVER=ip,port 格式和单独的Port=port 参数,但仍然没有运气。

我得到的错误是Login failed for user 'user'. (18456)

非常感谢任何帮助。

【问题讨论】:

  • 你安装了哪个版本的sqlserver?我一直面临许多与连接相关的问题,然后我意识到罪魁祸首是版本。

标签: python sql-server pandas sqlalchemy pyodbc


【解决方案1】:

我假设你想创建一个 DataFrame,所以当你有一个 cnxn 时,你可以将它传递给 Pandas read_sql_query 函数。 示例:

cnxn = pyodbc.connect('your connection string')
query = 'some query'

df = pandas.read_sql_query(query, conn)

【讨论】:

    猜你喜欢
    • 2017-03-04
    • 1970-01-01
    • 2016-03-10
    • 1970-01-01
    • 2012-12-17
    • 2016-10-16
    • 2013-12-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多