我能找到的大多数用Python显示完整MSSQL连接方法的示例在几个月前已经过时,部分原因是SQLAlchemy1.3中的一些优化。我试图复制我在文档中看到的内容
我无法使用pyodbc将SQLAlchemy连接到MSSQL Server。
我有一个本地SQL server,可从以下位置的SQL server Management Studio访问:#DESKTOP-QLSOTTG\SQLEXPRESS
数据库是:TestDB
本例中的用户名为:TestUser
本例中的密码为:TestUserPass
我想运行一个将pandas数据帧导入MSSQL数据库的测试用例(cases?),以找出最快的方法。然而,这个问题的目的是围绕连通性
信贷:我从Gord那里借了一些数据帧/更新here的代码
import pandas as pd
import numpy as np
import time
from sqlalchemy import create_engine, event
from urllib.parse import quote_plus
# for pyodbc
#engine = create_engine('mssql+pyodbc://TestUser:TestUserPAss@DESKTOP-QLSOTTG\\SQLEXPRESS:1433/TestDB?driver=ODBC+Driver+17+for+SQL+Server', fast_executemany=True)
engine = create_engine("mssql+pyodbc://TestUser:TestUserPass@DESKTOP-QLSOTTG\\SQLEXPRESS:1433/TestDB?driver=ODBC+Driver+13+for+SQL+Server", fast_executemany=True)
# test data
num_rows = 10000
num_cols = 100
df = pd.DataFrame(
[[f'row{x:04}col{y:03}' for y in range(num_cols)] for x in range(num_rows)],
columns=[f'col{y:03}' for y in range(num_cols)]
)
t0 = time.time()
df.to_sql("sqlalchemy_test", engine, if_exists='replace', index=None)
print(f"pandas wrote {num_rows} rows in {(time.time() - t0):0.1f} seconds")
我收到的错误如下。我将假设服务器“主动拒绝连接”是因为我的连接字符串不知怎么搞砸了,但我似乎不明白原因
OperationalError: (pyodbc.OperationalError) ('08001', '[08001] [Microsoft][ODBC Driver 13 for SQL Server]TCP Provider: No connection could be made because the target machine actively refused it.\r\n (10061) (SQLDriverConnect); [08001] [Microsoft][ODBC Driver 13 for SQL Server]Login timeout expired (0); [08001] [Microsoft][ODBC Driver 13 for SQL Server]A network-related or instance-specific error has occurred while establishing a connection to SQL Server. Server is not found or not accessible. Check if instance name is correct and if SQL Server is configured to allow remote connections. For more information see SQL Server Books Online. (10061)')
(Background on this error at: http://sqlalche.me/e/13/e3q8)
可以从SQL Server Management Studio连接数据库和用户。*
关于我可能遗漏的内容有什么想法吗?
注意事项:
您需要启用TCP/IP
在开始菜单上,单击所有程序>;Microsoft SQL Server 2012>;配置工具>;SQL Server配置管理器。 单击SQL Server 2012服务
展开SQL Server 2012网络配置节点,然后选择MSSQLServer的协议(SQL实例名称)
右键单击TCP/IP,然后单击启用
在树中选择SQL Server 2012服务。 右键单击SQL Server(SQL实例名称),然后单击重新启动
我将用一个完整的例子来回答这个问题,因为在这个过程中我还有一些其他的问题
此示例能够:
我已经为一些其他的DB提供者提供了一些未经测试的连接字符串。 截至2020年12月,pandas、sqlalchemy、pyodbc等的当前版本
关于连接字符串:
f"mssql+pyodbc://
开头的行其他提供商的替代包含声明
这些措施包括:
备用连接字符串
Credit用于DSN样式的字符串,我已将其修改为使用用户名/密码
相关问题 更多 >
编程相关推荐