mysql 操作

1 篇文章 0 订阅
1 篇文章 0 订阅
import pymysql
from DBUtils.PooledDB import PooledDB


# python连接mysql,建议用连接池,如果只是pymysql普通连接的话,同时执行两个或两个以上的sql语句会报错


class DB(object):
    """
    数据库
    """
    def __init__(self):
        # 创建连接池对象
        self.pool = PooledDB(
                        pymysql,
                        maxconnections=8,  # 最大连接数
                        mincached=2,
                        host='127.0.0.1',
                        port=3306,
                        user='feng',
                        password='87654321',
                        database='test',
                        charset='utf8',
                        cursorclass=pymysql.cursors.DictCursor  # 查询出来的数据为字典格式
                        )

    def create_connect(self):
        """
        创建sql连接
        :return:
        """
        connect = self.pool.connection()  # 建立一个连接, 我的理解是从连接池里取出来一个连接
        cursor = connect.cursou()  # 创建游标对象
        return connect, cursor

    def close_connect(self, connect, cursor):
        """
        关闭连接
        :return:
        """
        cursor.close()  # 关闭游标对象
        connect.close()  # 关闭连接

    def query(self):
        """
        查询
        :return:
        """
        # connect = self.pool.connection()  # 建立一个连接, 我的理解是从连接池里取出来一个连接
        # cursor = connect.cursou()  # 创建游标对象
        connect, cursor = self.create_connect()
        # 简单查询
        sql = 'select username from user_info;'
        cursor.execute(sql)
        result = cursor.fetchall()  # fetchall查询全部,返回的是一个列表/fetchone查询单条,返回的是一个字典/fetchmany(5),查询多个,可以指定查询数量
        # 条件查询指定字段
        sql = 'select id,username,status,userLevel,createDate,modifyDate from user_info where username="%s";' % 'laowang'

        # 按指定字段分页查询,倒序排序
        sql = 'select id,userLevel,username,status,createDate,modifyDate from user_info order by createDate desc limit %d, %d;' % ((1 - 1) * 10, 10)

        # 按指定字段分页查询,倒序排序
        sql = 'select id,userLevel,username,status,createDate,modifyDate from user_info order by createDate desc limit %d, %d;' % ((1 - 1) * 10, 10)

        # 关联查询
        sql = 'select pro_per.project_id,pro_per.office,per.personnelName from (project_personnel pro_per inner join project_info pro on pro_per.project_id=pro.id) inner join personnel per on pro_per.personnel_id=per.id where pro_per.responsible_status=1;'

        # 模糊查询
        sql = 'select * from project_info where project like "%%%%%s%%%%" order by createDate desc limit %d, %d;' % ('测试', (1 - 1) * 10, 10)

        # 根据日期查询
        sql = "select * from commission where date_format(commissionDate, '%Y-%m')='{}'".format('2020-10-25')
        
        # 查询数量
        sql = 'select count(*) from project_personnel where personnel_id="%d"' % 22

        # cursor.close()  # 关闭游标对象
        # connect.close()  # 关闭连接
        self.close_connect(connect, cursor)  # 程序执行完关闭连接,相当于把这个连接再放回连接池

    def add_to(self):
        """
        添加
        :return:
        """
        # connect = self.pool.connection()  # 建立一个连接, 我的理解是从连接池里取出来一个连接
        # cursor = connect.cursou()  # 创建游标对象
        connect, cursor = self.create_connect()

        sql = 'insert into personnel(personnelName, status, office) values ("%s", "%d", "%d");' % ('老张', 1, 1)

        cursor.execute(sql)
        connect.commit()

        self.close_connect(connect, cursor)

    def update(self):
        """
        更新
        :return:
        """
        connect, cursor = self.create_connect()

        sql = 'update personnel set status="%d" where id="%d";' % (1, 2)
        cursor.execute(sql)
        connect.commit()

        self.close_connect(connect, cursor)










 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

什固吴彦祖

有钱的捧个钱场,没钱的捧个人场

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值