shyoldboy 发表于 2021-7-27 15:06

会增删改查的python

我家python用之前还得"借用"别人写的连接代码,不然自己搞不定
python使用mysql-connector来连接使用MySql,
mysql-connector是mysql官方提供的mysql驱动器
在python中安装mysql驱动
命令:python -m pip install mysql-connector
导入模块 import mysql.connector

作为练习,本次表比较简单
创表语句如下
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的封装
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的定义
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

增删改查方法的实现
from mysql.connector import cursor
from DBManager import *
from Student import *
'''
    @AuThor 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
    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(这个大佬?????萌新求普及)

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

虽然很想学,但是看不懂,感觉很难:lol

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强
页: [1] 2
查看完整版本: 会增删改查的python