Python连接SQL Server数据库教程:安装pymssql与基础操作

小鹿同学
小鹿同学
发布时间:2026-10-15 | 5人浏览过
原创

本文详细介绍如何使用 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 协议未开启或未监听正确端口。

解决步骤:

  1. 检查端口位置:查看 Sql Server Network Configuration 中的 Properties,确认 TCP 端口。
  1. 开启 TCP/IP:在协议列表中右键启用 TCP/IP。
  2. 重启服务:更改设置后,必须重启 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 数据库开发的资料请关注本站其它相关文章!

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表