使用SQLAlchemy+PyODBC连接MS SQL时参数错乱,连接失败求助
解决MS SQL Server连接参数错乱问题
问题根源
你当前的连接逻辑存在三个关键错误:
- 连接URL里直接写了变量名字符串(比如
Username),没有替换成实际的变量值 - 拼写错误:
pyodc应为pyodbc,sal.create_engine应为sqlalchemy.create_engine - URL格式错误:端口需用冒号跟在主机后,数据库名要放在主机/端口段的末尾
修正后的SQLAlchemy连接代码
from sqlalchemy import create_engine Host = 'host_address123' Port = 7003 Username = 'user' Password = 'pass' DB = 'db-main' # 正确拼接URL:替换为实际变量,修正格式和拼写 url = f'mssql+pyodbc://{Username}:{Password}@{Host}:{Port}/{DB}?driver=ODBC+Driver+13+for+SQL+Server' engine = create_engine(url) # 测试连接 with engine.connect() as conn: result = conn.execute("SELECT 1") print(result.scalar())
替代方案:直接使用pyodbc连接
如果SQLAlchemy仍有问题,直接用pyodbc更直观:
import pyodbc Host = 'host_address123' Port = 7003 Username = 'user' Password = 'pass' DB = 'db-main' conn_str = ( f'DRIVER={{ODBC Driver 13 for SQL Server}};' f'SERVER={Host},{Port};' f'DATABASE={DB};' f'UID={Username};' f'PWD={Password}' ) conn = pyodbc.connect(conn_str) # 测试查询 cursor = conn.cursor() cursor.execute("SELECT 1") print(cursor.fetchone()[0]) cursor.close() conn.close()
额外注意事项
- 确保ODBC Driver 13已安装,若系统是较新版本的Windows/Linux,可尝试
ODBC Driver 17 for SQL Server兼容性更好 - 检查防火墙是否允许你的机器访问目标SQL Server的7003端口
- 确认SQL Server已开启TCP/IP协议(在SQL Server配置管理器中设置)
内容的提问来源于stack exchange,提问作者mahb
相关产品推荐
相关产品推荐

