python通过pymysql操作数据库

以下代码是我封装好的一个类,有需要的可以拿去使用!!!

import pymysql


class MysqlAPI(object):
    def __init__(self):
        self.conn = self.get_conn()

    def get_conn(self):     # 初始化连接
        try:
            conn = pymysql.connect(
                host = '127.0.0.1',
                user = '******',
                password ='******',
                db = 'news',
                charset = 'utf8',
                port = 3306
            )
            return conn
        except pymysql.Error as e:
            return '连接出错:{}'.format(e)

    def get_one(self):      # 查询一条数据
        sql = 'select * from news;'     # 准备sql语句
        cursor = self.conn.cursor()     # 获取cursor
        cursor.execute(sql)     # 执行sql语句
        col_list = [i[0] for i in cursor.description]   # 获取列名列表
        value_list = list(cursor.fetchone())    # 获取值的列表
        result = dict(zip(col_list, value_list))    # 转化为字典
        cursor.close()
        self.conn_close()
        return result

    def get_more(self):     # 获取多条数据
        sql = 'select * from news;'  # 准备sql语句
        cursor = self.conn.cursor()  # 获取cursor
        cursor.execute(sql)  # 执行sql语句
        col_list = [i[0] for i in cursor.description]  # 获取列名列表
        result = [dict(zip(col_list, row)) for row in cursor.fetchall()]  # 转化为字典
        cursor.close()
        self.conn_close()
        return result

    def paginator(self, page, num):   # 定义一个分页算法
        offset = (page - 1)*num
        sql = 'select * from news limit %s, %s;'  # 准备sql语句
        cursor = self.conn.cursor()  # 获取cursor
        cursor.execute(sql, (offset, num))  # 执行sql语句
        col_list = [i[0] for i in cursor.description]  # 获取列名列表
        result = [dict(zip(col_list, row)) for row in cursor.fetchall()]  # 转化为字典
        cursor.close()
        self.conn_close()
        return result

    def add_one(self):
        try:
            sql = 'insert into `news` (`title`, `content`, `type`, `image`, `author`) VALUE (%s, %s, %s, %s, %s);'
            cursor = self.conn.cursor()
            cursor.execute(sql, ('我是谁', '内容不重要', '你猜', '/image/1.jpg', '天下无双'))
            self.conn.commit()
            cursor.close()
        except:
            print('error')
            self.conn.rollback()    # 当插入语句出错时,则不会执行语句
        self.conn.close()
        print('插入数据成功!')

    def conn_close(self):
        try:
            if self.conn:
                self.conn.close()
        except pymysql.Error as e:
            print('关闭连接出错:{}'.format(e))


if __name__ == '__main__':
    # for i in range(4):
    #     demo = MysqlAPI()
    #     page = int(input('请输入要查询的页数:'))
    #     num = int(input('请输入每页显示多少条数据:'))
    #     result = demo.paginator(page,num)
    #     print(result)
    demo = MysqlAPI()
    demo.add_one()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值