如何在Python字符串中使用#字符?MSSQL连接密码含#的解决方法
解决MSSQL密码含#的Python连接问题
不需要修改密码,根据你使用的数据库连接库,有几种直接可用的方法:
1. 使用pymssql(推荐参数传递方式)
pymssql支持直接将密码作为独立参数传入,完全不需要处理特殊字符:
import pymssql # 直接传入含#的密码即可 conn = pymssql.connect( server="你的服务器地址", user="用户名", password="your#password", # 这里直接写带#的密码 database="目标数据库名" )
2. 使用pyodbc
pyodbc的传统连接字符串中,#不属于特殊字符(ODBC连接字符串的注释符是--),所以可以直接写入:
import pyodbc conn_str = ( r"DRIVER={ODBC Driver 17 for SQL Server};" r"SERVER=你的服务器地址;" r"DATABASE=目标数据库名;" r"UID=用户名;" r"PWD=your#password" # 直接包含#即可 ) conn = pyodbc.connect(conn_str)
3. 使用SQLAlchemy
如果用SQLAlchemy的URL格式连接,需要对#进行URL编码(编码为%23),或者用内置的URL构造器自动处理:
手动编码方式
from sqlalchemy import create_engine # 将密码中的#替换为%23 engine = create_engine( "mssql+pyodbc://用户名:your%23password@服务器地址/数据库名?driver=ODBC+Driver+17+for+SQL+Server" ) conn = engine.connect()
自动编码方式(推荐)
用SQLAlchemy的URL.create方法,会自动处理所有特殊字符,无需手动编码:
from sqlalchemy.engine import URL from sqlalchemy import create_engine url = URL.create( "mssql+pyodbc", username="用户名", password="your#password", # 直接传入带#的密码 host="服务器地址", database="数据库名", query={"driver": "ODBC Driver 17 for SQL Server"} ) engine = create_engine(url) conn = engine.connect()
内容的提问来源于stack exchange,提问作者jhseo
相关产品推荐
相关产品推荐

