python项目数据库使用

        在python项目中的数据库使用时,为了方便,我直接将pymysql库提供的接口封装成单独的函数实现,创建数据库和表,初始化,连接数据库,断开数据库,执行操作,查询操作。

1.创建库和表


        # 创建数据库
    def build(self):
        # 创建连接
        conn = pymysql.connect(host='localhost', user='用户名', password='密码', charset='utf8mb4')
        # 创建游标
        cursor = conn.cursor()

        # 创建数据库的sql(如果数据库存在就不创建,防止异常)
        sql = "CREATE DATABASE IF NOT EXISTS kongqikaiguan"
        # 执行创建数据库的sql
        cursor.execute(sql)
        # 链接建好的数据库
        cursor.execute('use kongqikaiguan')

        # 创建开关节点配置表
        sql_2 = '''CREATE TABLE IF NOT EXISTS `kaiguanjiedian`  (
              `开关节点装置序号` varchar(255) NOT NULL ,
              `所属测量点号` varchar(255) ,
              `通信速率及端口号` varchar(255) ,
              `通信协议类型` varchar(255) ,
              `通信地址` varchar(255) ,
              `通信密码` varchar(255) ,
              `电能费率个数` varchar(255) ,
              `有功电能示值整数位及小数位个数` varchar(255),
              `所属采集器通信地址` varchar(255),
              `用户大类号及用户小类号` varchar(255),
              `zdlb`  varchar(255),
              PRIMARY KEY (`开关节点装置序号`)
            ) 
            '''
        cursor.execute(sql_2)

        # 创建终端表
        sql_2 = '''CREATE TABLE IF NOT EXISTS `zd`  (
              `zdlb`  varchar(255) NOT NULL,
              PRIMARY KEY (`zdlb`)
            ) 
            '''
        cursor.execute(sql_2)

        # 关闭数据库链接
        cursor.close()
        conn.close()

 2.初始化,获得连接数据库的信息

 def __init__(self, host, user, password, database, port=3306, charset='utf8'):
        # 创建数据库和表
        self.build()
        # 初始化赋值
        self.host = host
        self.port = port
        self.user = user
        self.password = password
        self.database = database
        self.charset = charset

 3.打开和关闭数据库


    # 连接数据库函数
    def open(self):
        self.conn = pymysql.connect(host=self.host, port=self.port, database=self.database,
                                    user=self.user, password=self.password, charset=self.charset)
        self.cursor = self.conn.cursor()

    # 关闭数据库
    def close(self):
        self.cursor.close()
        self.conn.close()

 4.执行操作和查询操作。因为执行的函数和查询函数不一样


    # 执行 (增 删 改)
    def execute(self, sql, params=[]):
        try:
            self.open()

            self.cursor.execute(sql, params)
            self.conn.commit()

            self.close()
            print('OK')
        except Exception:
            print("error")

    # 查询所有
    def select_all(self, sql, params=[]):
        try:
            self.open()

            self.cursor.execute(sql, params)
            result = self.cursor.fetchall()

            self.close()
            return result
        except Exception:
            print("error")

    # 查询第一个
    def select_one(self, sql, params=[]):
        try:
            self.open()

            self.cursor.execute(sql, params)
            result = self.cursor.fetchone()

            self.close()
            return result
        except Exception:
            print("error")

5.全部代码 


import pymysql


class MysqlHelper(object):
    def __init__(self, host, user, password, database, port=3306, charset='utf8'):
        # 创建数据库和表
        self.build()
        # 初始化赋值
        self.host = host
        self.port = port
        self.user = user
        self.password = password
        self.database = database
        self.charset = charset

        # 创建数据库
    def build(self):
        # 创建连接
        conn = pymysql.connect(host='localhost', user='用户名', password='密码', charset='utf8mb4')
        # 创建游标
        cursor = conn.cursor()

        # 创建数据库的sql(如果数据库存在就不创建,防止异常)
        sql = "CREATE DATABASE IF NOT EXISTS kongqikaiguan"
        # 执行创建数据库的sql
        cursor.execute(sql)
        # 链接建好的数据库
        cursor.execute('use kongqikaiguan')

        # 创建开关节点配置表
        sql_2 = '''CREATE TABLE IF NOT EXISTS `kaiguanjiedian`  (
              `开关节点装置序号` varchar(255) NOT NULL ,
              `所属测量点号` varchar(255) ,
              `通信速率及端口号` varchar(255) ,
              `通信协议类型` varchar(255) ,
              `通信地址` varchar(255) ,
              `通信密码` varchar(255) ,
              `电能费率个数` varchar(255) ,
              `有功电能示值整数位及小数位个数` varchar(255),
              `所属采集器通信地址` varchar(255),
              `用户大类号及用户小类号` varchar(255),
              `zdlb`  varchar(255),
              PRIMARY KEY (`开关节点装置序号`)
            ) 
            '''
        cursor.execute(sql_2)

        # 创建终端表
        sql_2 = '''CREATE TABLE IF NOT EXISTS `zd`  (
              `zdlb`  varchar(255) NOT NULL,
              PRIMARY KEY (`zdlb`)
            ) 
            '''
        cursor.execute(sql_2)

        # 关闭数据库链接
        cursor.close()
        conn.close()


    # 连接数据库函数
    def open(self):
        self.conn = pymysql.connect(host=self.host, port=self.port, database=self.database,
                                    user=self.user, password=self.password, charset=self.charset)
        self.cursor = self.conn.cursor()

    # 关闭数据库
    def close(self):
        self.cursor.close()
        self.conn.close()

    # 执行 (增 删 改)
    def execute(self, sql, params=[]):
        try:
            self.open()

            self.cursor.execute(sql, params)
            self.conn.commit()

            self.close()
            print('OK')
        except Exception:
            print("error")

    # 查询所有
    def select_all(self, sql, params=[]):
        try:
            self.open()

            self.cursor.execute(sql, params)
            result = self.cursor.fetchall()

            self.close()
            return result
        except Exception:
            print("error")

    # 查询第一个
    def select_one(self, sql, params=[]):
        try:
            self.open()

            self.cursor.execute(sql, params)
            result = self.cursor.fetchone()

            self.close()
            return result
        except Exception:
            print("error")


6. 使用数据库封装的例子:

 # 实例化数据库类的对象
    sqlHelper = MysqlHelper('localhost', '用户名', '密码', '库名', 3306, 'utf8')

    # 查询数据库
    sql = "select zdlb from zd"
    result = sqlHelper.select_all(sql)
    
    # 删除数据库的内容
    # 获得当前item空间内的文本内容
    delete_item = self.listWidget.currentItem().text()        
    sql1 = "delete from zd where zdlb = %s "
    sqlHelper.execute(sql1, str(delete_item))

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值