# !/usr/bin/env python
# -*- coding:utf-8 -*-
# @Author  : QQ736592720
# @file    : 简答题466___ios虚拟机定制.py
# @Time    : 2022/4/2 11:19
# !/usr/bin/python
# -*- coding: utf-8 -*-
# @Version  : 1.0
# @Author   : QQ736592720
# @Datetime : 2021/1/31 21:49
# @Project  : pythonQuestionBank
# @File     : 简答题411___pyautogui练习.py
'''
phpStudy2017
db:user
table:apple_id
fields:email,phone,comment
unique key:email
'''

import pymysql

'''使用PyMySQL模块固定不变的执行顺序

1. 建立连接
2. 拿到游标
3. 执行SQL语句
4. 事务处理(提交修改)
5. 关闭(游标、连接)

游标(cursor)是系统为用户开设的一个数据缓冲区,存放SQL语句的执行结果。
每个游标区都有一个名字。
用户可以用SQL语句逐一从游标中获取记录,并赋给主变量,交由主语言进一步处理。

'''


class MySql():
    def __init__(self, password, db_name, table):
        self.table = table
        # 建立连接

        self.con = pymysql.connect(host="localhost", user="root", password=password, database=db_name, port=3306)
        # self.con.cursor()
        # self.con.commit()#sql语句执行完之后,需要提交修改才能在数据库中修改
        # self.con.begin()#事务开始
        # self.con.rollback()#事务回滚
        # self.con.close()

        # 拿到游标  execute fetchall fetchone close
        self.cur = self.con.cursor()
        # self.cur.execute()
        # self.cur.fetchall()
        # self.cur.fetchone()
        # self.cur.close()

    def fetchall(self):
        self.cur.execute("SELECT * FROM {}".format(self.table))
        data = self.cur.fetchall()
        # self.con.close()
        return data

    def fetchone(self):
        self.cur.execute("SELECT * FROM {} limit 1".format(self.table))
        data = self.cur.fetchall()
        # self.con.close()
        return data

    def insert(self, email, phone, comment):  # 字段  email,phone,comment
        try:
            add_sql = " insert into {}(email,phone,comment) values (%s,%s,%s) ".format(self.table)
            self.cur.execute(add_sql, (email, phone, comment))
            self.con.commit()
            print('执行成功!')
        except Exception as e:
            print(u'错误提示...', e)
            self.con.rollback()
        finally:
            ...
            # self.cur.close()

    def delete(self, email):
        try:
            sql = "delete from {} where email='{}'".format(self.table, email)  # 删除student表中id为2的行
            self.cur.execute(sql)
            self.con.commit()  # 事件提交
        except Exception as e:
            print(u'错误提示...', e)


if __name__ == '__main__':
    db = MySql('root', 'user', 'apple_id')  # 数据库登录密码,数据库名,表名
    db.insert("111@qq.com", "16620122910", "xiuxian")
    # db.delete("111@qq.com")
    r = db.fetchall()
    print(r)

    # r = db.fetchone()
    # print(r)

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐