SQL 服务器连接 - 适用于 pyodbc,但不适用于 SQLAlchemy

SQL Server connection - Works in pyodbc, but not SQLAlchemy

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

当我设置与 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)

非常感谢任何帮助。

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

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

df = pandas.read_sql_query(query, conn)