我家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(这个大佬?????萌新求普及) |