当前位置: 首页 > article >正文

【Python】‌数据库工具类,使用python连接sql server数据库

1.安装pymssql第三方库

pip install pymssql

出现如下图,表示安装成功:

在这里插入图片描述

2.编写工具类,我这里取名为sql_server_util.py

import pymssql


class SqlServerUtil:
    def __init__(self, ip, username, password, database):
        self.ip = ip
        self.username = username
        self.password = password
        self.database = database
        self.conn = None
        self.cursor = None

    def connect(self):
        '''建立数据库连接'''
        try:
            self.conn = pymssql.connect(server=self.ip, user=self.username, password=self.password, database=self.database)
            self.cursor = self.conn.cursor(as_dict=True) # 将结果作为字典返回
        except pymssql.DatabaseError as e:
            print(e)

    def disconnect(self):
        '''关闭数据库连接'''
        if self.cursor:
            self.cursor.close()
        if self.conn:
            self.conn.close()

    def fetch_data(self, sql):
        '''执行查询语句,并返回结果集,该方法适用于DQL语句'''
        try:
            self.cursor.execute(sql)
            resultMapList = self.cursor.fetchall()
            return resultMapList
        except pymssql.DatabaseError as e:
            print(e)

    def execute_sql(self, sql):
        '''执行sql语句,该方法适用于DDL、DML和DCL语句'''
        try:
            self.cursor.execute(sql)
            # 如果是INSERT、UPDATE、DELETE、DROP、CREATE开头的语句,则需要提交事务
            if sql.strip().upper().startswith(('INSERT', 'UPDATE', 'DELETE', 'DROP', 'CREATE')):
                self.commit()
        except pymssql.DatabaseError as e:
            self.rollback() # 发生错误时,则需要回滚事务
            print(e)

    def commit(self):
        '''提交事务'''
        if self.conn:
            self.conn.commit()

    def rollback(self):
        '''回滚事务'''
        if self.conn:
            self.conn.rollback()


if __name__ == '__main__':
    # 数据库信息
    ip = '192.168.215.1'
    username = 'admin'
    password = '123456'
    database = 'myDatabase'
    # 执行sql语句
    sqlServer = SqlServerUtil(ip, username, password, database)
    sqlServer.connect()
    sql = 'SELECT name FROM sys.tables ORDER BY name ASC'
    resultMapList = sqlServer.fetch_data(sql)
    print(resultMapList)
    sqlServer.disconnect()


http://www.kler.cn/a/455109.html

相关文章:

  • 【JavaEE进阶】@RequestMapping注解
  • Go主协程如何等其余协程完再操作
  • bash shell的条件语句
  • HarmonyOS NEXT 实战之元服务:静态多案例效果(一)
  • Redis——数据过期策略
  • 深度学习中的并行策略概述:2 Data Parallelism
  • 12.13[java exp4][debug]nginx 500,究极未解之谜,出自重启,解决自重启,迷???
  • 【微信小程序】页面跳转基础 | 我的咖啡店-综合实训
  • 猛将:无我
  • 2025:OpenAI的“七十二变”?
  • 【测试】接口测试
  • 数据可视化软件配置
  • Unity 踩坑记录 将Image 的 Image Type 设置成 sliced 不显示图片
  • 【超详细】Windows安装Npcap
  • Framework开发入门(一)之源码下载
  • 音视频入门知识(七):时间戳及其音视频播放原理
  • Redis String 字符串详细讲解
  • 极狐GitLab 17.7正式发布,可从 GitLab 丝滑迁移至极狐GitLab【一】
  • OCR实践-问卷表格统计
  • Xilinx FPGA的Bitstream比特流加密设置方法
  • 浅谈Python库之asyncio
  • springboot499基于javaweb的城乡居民基本医疗信息管理系统(论文+源码)_kaic
  • layui多图上传,tp8后端接收处理
  • 【蓝桥杯】奇怪的捐赠
  • 【Artificial Intelligence篇】AI 携手人类:共铸未来创作新纪元
  • 去除 el-input 输入框的边框(element-ui@2.15.13)