Python3连接SQL Server数据库:pymssql模块实战与封装
本文详细讲解如何使用Python3通过pymssql模块连接SQL Server数据库。内容涵盖环境安装、连接配置(含身份验证注意事项)、数据查询与插入的完整代码示例,以及基于类的数据库操作封装方法,帮助开发者快速掌握Python与SQL Server的交互技巧。
环境准备与模块安装
在Python中操作SQL Server数据库,通常使用 pymssql 模块。首先需要通过pip安装该模块:
pip install pymssql建立数据库连接
连接SQL Server数据库需要指定主机地址、用户名、密码、数据库名以及字符集。以下是一个基础的连接示例:
import pymssql
conn = pymssql.connect(host='127.0.0.1',
user='sa',
password='123',
database='SQLTest',
charset='utf8')注意:如果Windows系统默认使用Windows身份验证,可能需要改为SQL Server验证方式才能通过上述代码连接。

执行数据查询
连接成功后,可以通过游标(Cursor)执行SQL语句。以下示例演示如何查询 student 表中的所有数据:
#查看连接是否成功
cursor = conn.cursor()
sql = 'select * from student'
cursor.execute(sql)
#用一个rs变量获取数据
rs = cursor.fetchall()
print(rs)执行数据插入与事务处理
对于插入、更新或删除操作,必须使用事务管理以确保数据一致性。以下示例展示了如何安全地执行插入操作:
try:
conn = pymssql.connect(host='127.0.0.1',
user='sa',
password='123',
database='SQLTest',
charset='utf8')
cursor = conn.cursor()
sql = 'insert into student values('0001', '张三', 18, '男', '文学院')'
cursor.execute(sql)
conn.commit()
except Exception as ex:
conn.rollback()
raise ex
finally:
conn.close()在上述代码中,如果插入操作成功,则提交事务(conn.commit());如果发生异常,则回滚事务(conn.rollback())并抛出异常。无论成功与否,最终都会关闭数据库连接。
封装数据库操作类
为了在项目中更好地复用数据库连接逻辑,可以将上述操作封装为一个类。以下是一个简单的 TestDB 类示例:
'''
TestDB类
功能:测试数据库的类写法
作者:PyLearn
博客: http://www.cnblogs.com/PyLearn/
最后修改日期: 2017/10/17
'''
import pymssql
class TestDB():
def __init__(self):
try:
self.conn = pymssql.connect(host='127.0.0.1',
user='sa',
password='123',
database='SQLTest',
charset='utf8')
self.cursor = self.conn.cursor()
self.sql = "insert into student values('0001', '张三', 18, '男', '文学院')"
self.cursor.execute(self.sql)
self.conn.commit()
except Exception as ex:
self.conn.rollback()
raise ex
finally:
self.conn.close()
if __name__ == '__main__':
test_DB = TestDB()该 TestDB 类在初始化时自动连接数据库、执行插入操作并提交事务。如果发生异常,则回滚并抛出异常。最后,在 finally 块中关闭数据库连接。
总结
通过本文的讲解,我们了解了如何使用Python3和 pymssql 模块连接SQL Server数据库,并执行了基本的查询和插入操作。同时,我们还学习了如何将数据库操作封装为类,以便在项目中更好地复用。
以上就是Python3操作SQL Server数据库(实例讲解)的详细内容,更多关于Python连接SQL Server数据库的资料请关注本站其它相关文章!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













