吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2186|回复: 13
收起左侧

[Python 转载] 会增删改查的python

[复制链接]
shyoldboy 发表于 2021-7-27 15:06
我家python用之前还得"借用"别人写的连接代码,不然自己搞不定
python使用mysql-connector来连接使用MySql,
mysql-connector是mysql官方提供的mysql驱动器
在python中安装mysql驱动
命令:python -m pip install mysql-connector
导入模块
[Python] 纯文本查看 复制代码
import mysql.connector


作为练习,本次表比较简单
创表语句如下
[SQL] 纯文本查看 复制代码
CREATE TABLE `student` (
  `stuid` INT(11) NOT NULL AUTO_INCREMENT,
  `stuname` VARCHAR(50) DEFAULT NULL,
  `stuage` INT(11) DEFAULT NULL,
  PRIMARY KEY (`stuid`),
  UNIQUE KEY `stuname` (`stuname`)
) ENGINE=INNODB AUTO_INCREMENT=18 DEFAULT CHARSET=utf8


连接数据库的DBManager的封装
[Python] 纯文本查看 复制代码
import mysql.connector
class DBManager:
    def connection(self):
        try:
            mydb = mysql.connector.connect(
                # 通过配置文件获取
                host="localhost",       # 数据库主机地址
                user="root",    # 数据库用户名
                passwd="111111",   # 数据库密码
                database='runoob_db'
            )
        except Exception as e:
            print(e)
        return mydb

    def dbcursor(self,conn):      
        return conn.cursor()

    def closes(self,conect,cursor):
        try:
            conect.close()
            cursor.close()
        except Exception as e:
            print(e)
        finally:
            conect.close()
            cursor.close()

实体类Student的定义
[Python] 纯文本查看 复制代码
class Student:
    def __init__(self,stuId,stuName,stuAge) -> None:
        self.__stuId = stuId
        self.__stuName = stuName
        self.__stuAge = stuAge

    def setId(self,stuId):
        self.__stuId = stuId
    
    def setName(self,stuName):
        self.__stuName = stuName

    def setAge(self, stuAge):
        self.__stuAge = stuAge

    def getId(self):
        return self.__stuId
    
    def getName(self):
        return self.__stuName
    
    def getAge(self):
        return self.__stuAge


增删改查方法的实现
[Python] 纯文本查看 复制代码
from mysql.connector import cursor
from DBManager import *
from Student import *
'''
    [url=home.php?mod=space&uid=686208]@AuThor[/url] Mr_zhang    
'''
class IStudentDaoImpl:
    
    def fingAll(self):
        # 获取连接和游标b
        db = DBManager() # 创建工具类对象
        conn = db.connection() # 获取连接
        cursor = db.dbcursor(conn) # 获取游标
        sql = 'select * from student' # 定义sql语句
        cursor.execute(sql) # 执行sql语句 
        myresult = cursor.fetchall()  # 获得所有的信息并封装成列表
        db.closes(conn,cursor) # 关闭游标
        # 将列表数据封装为对象类型
        return [Student(id,name,age) for (id,name,age) in myresult]
    def findById(self,id):
        # 获取连接和游标
        db = DBManager() # 创建工具类对象
        conn = db.connection() # 获取连接对象
        cursor = db.dbcursor(conn) # 获取游标对象
        sql = 'select * from student where stuid = {id}' # 根据id 查找数据(id必须是str类型)
        cursor.execute(sql) # 执行sql
        myresult = cursor.fetchone() # 查找一行数据 
        # print(myresult)
        db.closes(conn,cursor)  # 关闭游标和连接
        return Student(*myresult) # 封装列表数据为对象类型

    def insertStu(self,stu):
        # 获取连接和游标
        db = DBManager() # 创建工具类对象
        conn = db.connection() # 获取连接对象
        cursor = db.dbcursor(conn) #获取游标对象
        sql = f"INSERT INTO student (stuname, stuage) VALUES ('{stu.getName()}',{stu.getAge()})"
        print(sql)
        # cursor.execute(sql,stu.getName(),stu.getAge())
        cursor.execute(sql)
        # print(cursor.execute(sql))
        conn.commit()
        db.closes(conn,cursor)
        return True
    def updateStu(self,stu):
        # 获取连接和游标
        db = DBManager() # 创建工具类对象
        conn = db.connection() # 获取连接对象
        cursor = db.dbcursor(conn) #获取游标对象
        sql = f"UPDATE student SET stuname = '{stu.getName()}',stuage='{stu.getAge()}' WHERE stuid = {stu.getId()}"
        cursor.execute(sql)
        conn.commit()
        db.closes(conn,cursor)

    def deleteStu(self,stuId):
        # 获取连接和游标
        db = DBManager() # 创建工具类对象
        conn = db.connection() # 获取连接对象
        cursor = db.dbcursor(conn) #获取游标对象
        sql = f'delete from student where stuid = {stuId}'
        cursor.execute(sql)
        conn.commit()
        db.closes(conn,cursor)

if __name__ == '__main__':
    sutim = IStudentDaoImpl()
    # student = sutim.fingAll()
    # student = sutim.findById(2)
    # print(student.getId(),student.getName(),student.getAge())
    # stu = Student(1,'chenggong',112)
    # sutim.updateStu(stu)
    stu = Student(1,'chenggong',112)
    sutim.deleteStu(1)

连接数据库可以搞一个配置文件,增删改查方法可以搞成共有方法,先写一版本。。
日后慢慢优化更新。。。。。。

问个问题 吾爱破解论坛最帅的人是谁? Hmily(这个大佬?????萌新求普及)

免费评分

参与人数 1热心值 +1 收起 理由
AoAn56 + 1 热心回复!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| shyoldboy 发表于 2021-7-28 19:00
ymhld 发表于 2021-7-27 20:55
Hmily 是超级版主吧,去看看排名就知道了,大佬 太多了

呦西,可以,看到最后我那句话,就很厉害
 楼主| shyoldboy 发表于 2021-7-27 19:23
zj1977lsz 发表于 2021-7-27 16:25
虽然很想学,但是看不懂,感觉很难

那是你的感觉,试试就不难了,可以尝试一下
zj1977lsz 发表于 2021-7-27 16:25
wh0522 发表于 2021-7-27 19:56
增删改查的pytho
FFEE 发表于 2021-7-27 20:54
python真的没有广告说的那么简单。
ymhld 发表于 2021-7-27 20:55
Hmily 是超级版主吧,去看看排名就知道了,大佬 太多了
么么哒熊 发表于 2021-7-28 09:19
em...........增删改查 感觉java方便点
RoyPenn 发表于 2021-7-28 11:06
写的比我好,学习下
 楼主| shyoldboy 发表于 2021-7-28 19:01
么么哒熊 发表于 2021-7-28 09:19
em...........增删改查 感觉java方便点

web 目前对于python,还是没有java强
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 14:22

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表