Python连接SQL Server数据库教程:安装pymssql与基础操作
本文详细介绍如何使用 Python 的 pymssql 库连接 SQL Server 数据库,涵盖从环境配置、模块下载到核心 CRUD(增删改查)操作的完整代码流程,并排查 TCP 端口与编码乱码两大常见错误。
实验环境
本次演示基于以下环境:
- Python 版本:
3.9.7(Windows AMD64) - 数据库版本:SQL Server 2019
基本步骤
第1步:安装pymssql模块
由于 Python 3.6+ 在直接安装 pymssql 时可能遇到兼容性问题,建议优先尝试标准 pip 安装;若失败,则需根据 Python 版本下载对应的编译版 whl 文件进行本地安装。
方法一:通过 pip 在线安装
pip install pymssql
方法二:离线安装特定版本(推荐用于 Python 3.9)
前往官网获取对应版本的 wheel 文件:https://pypi.org/project/pymssql/
# 假设当前目录下存在 cp39 对应的 whl 包 pip install pymssql-2.2.4-cp39-cp39-win_amd64.whl
第2步:编写连接代码
新建 sqlserver.py,导入模块并创建连接对象。默认 TCP 端口为 1433,注意设置正确的字符集(如 GBK 或 UTF-8)以避免乱码。
#coding=utf-8 # 设置脚本全局为 utf-8格式
import pymssql
# 创建连接字符串
conn = pymssql.connect(
host='localhost', # 可用本机IP或 IP:端口
server="YOUR_SERVER", # 服务器名称
port="1433", # TCP端口
user="sa", # 用户名
password="YOUR_PASS", # 密码
database="YOUR_DB", # 数据库名
charset="GBK" # 根据数据库实际编码设置
)
if conn:
print('连接数据库成功!')
else:
print('连接失败')第3步:执行 SELECT 查询
使用游标 cursor() 获取数据,可通过 fetchall() 获取所有记录。原始数据常包含多余空格,需遍历处理后转换格式。
cursor = conn.cursor()
sql_select = "SELECT * FROM STUDENT"
cursor.execute(sql_select)
results = cursor.fetchall()
for result in results:
result = list(result) # 元组转列表
for i in range(len(result)):
if isinstance(result[i], str):
result[i] = result[i].replace(' ', '') # 去除空字符串中的空格
result = tuple(result) # 转回元组打印
print("处理后结果:", result)
conn.commit()
conn.close()
第4步:执行 INSERT 插入语句
向表中添加新数据,完成后必须提交事务 commit()。
cursor = conn.cursor() sql_insert = "insert into student values(990031,'wang',20,'男','bb','aa')" cursor.execute(sql_insert) conn.commit() conn.close()
第5步:执行 UPDATE 更新语句
修改符合条件的记录数据。
cursor = conn.cursor() sql_update = "update student set AGE=21 where SNO='990031'" cursor.execute(sql_update) conn.commit() conn.close()
第6步:执行 DELETE 删除语句
移除指定条件的记录。
cursor = conn.cursor() sql_delete = "delete from student where sno='990031'" cursor.execute(sql_delete) conn.commit() conn.close()
第7步:新建表 CREATE TABLE
动态创建数据库表结构。
cursor = conn.cursor()
sql_create = """create table table_student(
SNO int primary key not null,
SNAME varchar(100),
SDEPT varchar(100),
BPLACE varchar(100)
)"""
cursor.execute(sql_create)
conn.commit()
conn.close()错误排查与解决
错误1:连接被拒绝(无法连接数据库)
如果连接时报错,通常是因为 SQL Server 的 TCP/IP 协议未开启或未监听正确端口。
解决步骤:
- 检查端口位置:查看
Sql Server Network Configuration中的 Properties,确认 TCP 端口。
- 开启 TCP/IP:在协议列表中右键启用
TCP/IP。 - 重启服务:更改设置后,必须重启
SQL Server (MSSQLSERVER)服务才能生效。
错误2:查询结果中文乱码
若插入或查询中文显示为问号或乱码,需核对数据库字符页(CodePage)。
验证编码:
select COLLATIONPROPERTY('chinese_PRC_Stroke_CI_AI_KS_WS','CodePage')
常见 CodePage 对照:
- 936:简体中文 GBK
- 950:繁体中文 BIG5
- 437:英文 OEM
- 866:俄文
- 932:日文
修正方法:确保 Python 连接字符串 charset 参数与数据库校验规则(Collation)一致。例如数据库是 GBK 编码,Python 连接时应设 charset="GBK"。
总结
以上就是使用 Python 连接并简单操作 SQL Server 数据库的详细内容,涉及模块安装、五种基础 SQL 操作实现及故障排除技巧。更多关于 Python 数据库开发的资料请关注本站其它相关文章!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









