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)
这是一个相当常见的问题,但即使使用 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)