相关疑难解决方法(0)

如何使用Windows身份验证通过sqlalchemy连接到SQL Server?

sqlalchemy是Python的数据库连接模块,默认情况下使用SQL身份验证(数据库定义的用户帐户).如果要使用Windows(域或本地)凭据对SQL Server进行身份验证,则必须更改连接字符串.

默认情况下,由sqlalchemy定义,连接到SQL Server的连接字符串如下所示:

sqlalchemy.create_engine('mssql://*username*:*password*@*server_name*/*database_name*')
Run Code Online (Sandbox Code Playgroud)

如果使用您的Windows凭据,这将抛出类似于此的错误:

sqlalchemy.exc.DBAPIError: (Error) ('28000', "[28000] [Microsoft][ODBC SQL Server Driver][SQL Server]Login failed for us
er '***S\\username'. (18456) (SQLDriverConnect); [28000] [Microsoft][ODBC SQL Server Driver][SQL Server]Login failed for us
er '***S\\username'. (18456)") None None
Run Code Online (Sandbox Code Playgroud)

在此错误消息中,代码18456标识SQL Server自身引发的错误消息.此错误表示凭据不正确.

python sql-server sqlalchemy

28
推荐指数
5
解决办法
3万
查看次数

使用 SQLAlchemy 时 pandas.read_sql() 比 pyodbc 慢得多

我正在尝试从 SQL 读取一个小表,并且正在考虑从 pyodbc 切换到 SQLAlchemy 以便能够使用 pd.to_sql()

当我比较两者时,sql alchemy 慢得多。

s_py = """\
import pandas as pd
import pyodbc
cxn = pyodbc.connect('DRIVER={SQL SERVER};SERVER=.\;DATABASE=PPIS;UID=sa;PWD=pwd')
"""

s_alch = """\
import pandas as pd
import sqlalchemy
cxn = sqlalchemy.create_engine("mssql+pyodbc://sa:pwd@./PPIS?driver=SQL+Server")
"""
timeit.timeit('pd.read_sql("SELECT * FROM Operators", cxn)',setup=s_py, number=100)
Run Code Online (Sandbox Code Playgroud)

输出[21]:0.18496091418973037

timeit.timeit('pd.read_sql("SELECT * FROM Operators", cxn)',setup=s_alch, number=100)
Run Code Online (Sandbox Code Playgroud)

输出[23]:4.407356934717654

我见过这个谈论插入行。但为什么读取速度会慢很多呢?

python sqlalchemy pyodbc pandas

6
推荐指数
0
解决办法
2420
查看次数

标签 统计

python ×2

sqlalchemy ×2

pandas ×1

pyodbc ×1

sql-server ×1