学习大数据DAY31 Python基础语法4和基于Python中的MySQL 编程

news2024/9/24 3:21:55

目录

Python 库 模块

time&datetime 库

连接 MySQL 操作

结构操作

数据增删改操作

数据查询操作

上机练习 7

面向对象 OOP

封装

继承

三层架构---面向对象思想模型层

数据层

业务逻辑显示层

上机练习 8 三层架构开发豆瓣网

关于我对 AI 写代码的看法:


Python 库 模块

1. 基本功能
2. 标准库
3. 扩展库
4. 自定义库
python import 或者 from ... import 来导入相应的库。

time&datetime

Python 中处理时间的标准库
提供获取系统时间并格式化输出功能
提供系统级精确计时功能,用于程序性能分析
time 库包含三类函数
时间获取: localtime()
时间格式化: strftime()
strptime()
程序计时: sleep()
perf_counter()
import time
# 日期类型与字符串直接互相转化
t1= time.localtime()
print(time.strftime("%Y-%m-%d %H:%M:%S",t1))
timeStr = '2018-01-26 12:55:20'
t2=time.strptime(timeStr, "%Y-%m-%d %H:%M:%S")
# 测试程序执行时间差
t_start = time.perf_counter()
print(" 测试 ")
# 开始休眠
time.sleep(5)
print(" 休眠完毕 ")
t_end = time.perf_counter()
print( t_end-t_start )
import datetime
t = datetime.datetime.now()
print(datetime.datetime.strftime(t,"%Y-%m-%d %H:%M:%S"))
print(datetime.datetime.strptime("20230211","%Y%m%d"))

连接 MySQL 操作

pymysql 是在 Python3.x 版本中用于连接 MySQL 服务器的一个库
vscode 终端下面直接运行 pip3 install pymysql 安装即可
import pymysql
# 连接 database
conn = pymysql.connect(
host="127.0.0.1",
user="root",password="root123456",
database="test",
charset="utf8")
print(" 打开数据库 ")
# 关闭数据库
conn.close()
print(" 关闭数据库 ")

结构操作

import pymysql
# 连接 database
conn = pymysql.connect(
host="127.0.0.1",
user="root",password="root123456",
database="test",
charset="utf8")
# 得到一个可以执行 SQL 语句的光标对象
baoma = conn.cursor()
print(" 打开数据库 ")
# 使用预处理语句创建表
sql1 = """create table if not exists MovieType(
tid int primary key,
tname varchar(20),
tcontent varchar(500),
tdate datetime
)"""
baoma.execute(sql1)
print(" 操作成功 ")
baoma.close()
conn.close()
print(" 关闭数据库 ")

数据增删改操作

import pymysql
# 连接 database
conn = pymysql.connect(
host="127.0.0.1",
user="root",password="root123456",
database="test",
charset="utf8")
# 得到一个可以执行 SQL 语句的光标对象
baoma = conn.cursor()
print(" 打开数据库 ")
c="insert into MovieType values(1,' 喜 剧 ',' 这 是 一 种 搞 笑 的 视 频
',now())"
result=baoma.execute(c)
conn.commit() # 需要提交才到数据库,有错则 rollback
print(" 插入成功 ")
print(result) # 可以使用 return 返回结果
baoma.close()
conn.close()
print(" 关闭数据库 ")

数据查询操作

baoma.fetchone(): 执行完毕返回的结果集默认以元组显示
baoma.fetchall(): 元组的元组
import pymysql
sql = "select * from MovieType order by tdate desc"
baoma.execute(sql)
# data = baoma.fetchone()# 读一行
# print(data)
data = baoma.fetchall()# 读所有
print(data)
for i in data:
print(i[0],i[1])

上机练习 7

注意:增删改查请分开执行。
# 1.灵活使用 pymyql 来完成创建表、添加数据、查询数据
# create table if not exists MovieType(# tid int primary key,
# tname varchar(20),
# tcontent varchar(200),
# tdate datetime
# )
# insert into MovieType values(1,'喜剧','这是一个搞笑的电影',now())
# insert into MovieType values(2,'动作','这这是一个打斗的电影
',now())
# select * from MovieType
# 2.查询数据时日期处理成如下格式:
# 1 喜剧 这是一个搞笑的电影 2023 年 08 月 21 日
# 2 动作 这是一个打斗的电影 2023 年 08 月 21 日
import pymysql
import datetime
# 连接 database
conn = pymysql.connect(
host="127.0.0.1",
user="root",password="root123456",
database="test",
charset="utf8")
print("打开数据库")
# 得到一个可以执行 SQL 语句的光标对象
baoma = conn.cursor()
sql1="""create table if not exists MovieType(
tid int auto_increment primary key,
tname varchar(20),
tcontent varchar(200),
tdate datetime
)"""
baoma.execute(sql1)
sql2="insert into MovieType(tcontent,tname,tdate) values('喜剧
','这是一个搞笑的电影',now())"
sql3="insert into MovieType(tcontent,tname,tdate) values('动作
','这这是一个打斗的电影',now())"
baoma.execute(sql2)
conn.commit()
baoma.execute(sql3)
conn.commit()
print("插入成功")SelectData="select * from MovieType"
baoma.execute(SelectData)
data=baoma.fetchall()
for i in data:
print(i[0],i[1],i[2],datetime.datetime.strftime(i[3],"%Y
年%m 月%d 日"))
#关闭数据库
baoma.close()
conn.close()
print("关闭数据库")

面向对象 OOP

类是抽象的,对象是具体的,先有类才有对象

封装

类及对象包含属性和方法
属性:静态特征 全局变量 成员
方法:动态特征 函数 功能
类方法必须包含参数 self, 且为第一个参数, self 代表的是类的实例。
Python 中,所有以双下划线 __ 包起来的方法,统称为 Magic Method (魔术
方法),而
魔术方法不需要调用就可以自动执行。
触发机制:使用类创建对象之后立即触发
作用:初始化对象的成员 ( 给对象添加属性 )
# 类定义
class People:
name=""
age=0
def __init__(self,xingming,nianling):
self.name=xingming
self.age=nianling
def show(self):
print(f" 姓名是 {self.name}, 年龄是 {self.age}")
# 调用
if __name__=="__main__":
ldh=People(" 刘德华 ",50)
ldh.show()

继承

class 子类名 ( 父类名 ):
子类直接具备父类的属性和方法 解决代码重用问题,提高开发效率
方法重写
如果你的父类方法的功能不能满足你的需求,你可以在子类重写你父类的方法
class Student(People):
grade=""
def __init__(self, xingming, nianling,nianji):
super().__init__(xingming,nianling)
self.grade=nianji
def test(self):
print(f" 年级是 {self.grade}")
# 方法重写
def show(self):
print(f" 姓名是 {self.name}, 年龄是 {self.age}, 年级是 {self.grade}")
# 调用
if __name__=="__main__":
zjl=Student(" 周杰伦 ",20,52)
zjl.show()

三层架构---面向对象思想模型层

模型层
--- 新建文件夹 webDouban 创建文件 Model.py
import datetime
class MovieType:
tid=0
tname=""
tcontent=""
tdate=datetime.datetime.now()
def __init__(self,tid1,tname1,tcontent1):
self.tid=tid1
self.tname=tname1
self.tcontent=tcontent1
数据层
--- 创建文件 DAL.py
import pymysql
class DBHelper:
# 方法
# 数据库链接
def openDB(self):
global conn
conn=pymysql.connect(host="127.0.0.1",user="root",
password="root123456",database="test",charset="utf8")
global baoma
baoma=conn.cursor()
def closeDB(self):
baoma.close()
conn.close()
# 数据增删改
def edit(self,sql):
self.openDB()
result=baoma.execute(sql)
conn.commit()
self.closeDB()
return result
# 查询多条
def chaAll(self,sql):
self.openDB()
baoma.execute(sql)
result=baoma.fetchall()
self.closeDB() return result
# 查询一条
def chaOne(self,sql):
self.openDB()
baoma.execute(sql)
result=baoma.fetchone()
self.closeDB()
return result
class MovieTypeDAL(DBHelper):
def insert(self,mt):
sql=f"insert
into
MovieType
values({mt.tid},'{mt.tname}','{mt.tcontent}',now())"
return self.edit(sql)
def select(self):
sql="select * from MovieType"
return self.chaAll(sql)
def selectByTid(self,tid):
sql=f"select * from MovieType where tid={tid}"
return self.chaOne(sql)
def delete(self,tid):
sql=f"delete from MovieType where tid={tid}"
return self.edit(sql)
业务逻辑显示层
--- 创建文件 BLL.py
from Model import MovieType
from DAL import MovieTypeDAL
mtdal=MovieTypeDAL()
menu="""------------- 豆瓣网管理系统 -----------------
=========== 功能菜单 ===========
1 录入电影类型信息
2 修改电影类型信息
3 删除电影类型信息
4 显示所有电影类型信息
0 退出系统
============================="""
if __name__=="__main__":
while True:
print(menu)
option=input(" 请输入操作选项 :")
if option=="4":
result=mtdal.select() print(result)
elif option=="0":
answer=input(" 请问是否退出 ? y/n ): ")
if answer=="y":
print(" 已成功退出 ")
break

上机练习 8 三层架构开发豆瓣网

老师课件已经提供了大部分代码,我要做的就是添加和修改代码。
使用技术:
数据库: mysql
电影类型表: MovieType(tid,tname,tcontent,tdate)
项目文件夹: webDouban
模型层: Model 类名: MovieType
数据层: DAL 类名:父类 DBHelper ,子类 MovieTypeDAL
业务逻辑层: BLL 程序入口
------------- 豆瓣网管理系统 -----------------
=========== 功能菜单 ===========
1 录入电影类型信息
2 修改电影类型信息
3 删除电影类型信息
4 显示所有电影类型信息
0 退出系统
=============================
请输入操作选项: 1
请输入编号: 2
请输入名称:动画
请输入内容:这个小孩子非常喜欢
录入成功
=============================
请输入操作选项: 2
请输入修改编号: 888
此电影类型不存在
=============================
请输入操作选项: 2
请输入修改编号: 2
编号 名称 内容 创建日期
2 动画 这个小孩子非常喜欢 2023 04 29
请输入修改名称:动画 1 请输入修改内容:这个小孩子非常喜欢 1
修改成功
=============================
请输入操作选项: 3
请输入删除编号: 888
此电影类型不存在
=============================
请输入操作选项: 3
请输入删除编号: 2
编号 名称 内容 创建日期
2 动画 这个小孩子非常喜欢 2023 04 29
确认要删除吗?( y/n ): y
删除成功
=============================
请输入操作选项: 4
编号 名称 内容 创建日期
1 喜剧 这是一种搞笑的视频 2023 04 29
2 动画 这个小孩子非常喜欢 2023 04 29
=============================
请输入操作选项: 0
请问是否退出 ? y/n ): y
已成功退出
=============================
请输入操作选项: 5
不要乱来哦
Model.py:
import datetime
class MovieType:
tname=""
tcontent=""
tdate=datetime.datetime.now()
def __init__(self,tname1,tcontent1):
self.tname=tname1
self.tcontent=tcontent1
DAL.py:
import datetime
import pymysql
class DBHelper:
# 方法
# 数据库链接def openDB(self):
global conn
conn=pymysql.connect(host="127.0.0.1",user="root",
password="root123456",database="test",charset="utf8")
global baoma
baoma=conn.cursor()
# 关闭数据库
def closeDB(self):
baoma.close()
conn.close()
# 数据增删改
def edit(self,sql):
self.openDB()
result=baoma.execute(sql)
conn.commit()
self.closeDB()
return result
# 查询多条
def chaAll(self,sql):
self.openDB()
baoma.execute(sql)
result=baoma.fetchall()
self.closeDB()
return result
# 查询一条
def chaOne(self,sql):
self.openDB()
baoma.execute(sql)
result=baoma.fetchone()
self.closeDB()
return result
class MovieTypeDAL(DBHelper):
# 插入数据
def insert(self,mt):
sql=f"insert into MovieType(tname,tcontent,tdate)
values('{mt.tname}','{mt.tcontent}',now())"
return self.edit(sql)
# 查询数据
def select(self):
sql="select * from MovieType"
return self.chaAll(sql)
# 根据 id 号修改数据def update(self,tid,UpdateColumn,EndValue):
if type(EndValue)==str:
sql=f"update MovieType set
{UpdateColumn}='{EndValue}' where tid={tid}"
elif type(EndValue)==int :
sql=f"update MovieType set {UpdateColumn}={EndValue}
where tid={tid}"
elif type(EndValue)==datetime.datetime:
sql=f"update MovieType set
{UpdateColumn}='{EndValue}' where tid={tid}"
return self.edit(sql)
# 通过 id 号查询数据
def selectByTid(self,tid):
sql=f"select * from MovieType where tid={tid}"
return self.chaOne(sql)
# 通过 id 号删除数据
def delete(self,tid):
sql=f"delete from MovieType where tid={tid}"
return self.edit(sql)
BLL.py:
from Model import MovieType
from DAL import MovieTypeDAL
import datetime
mtdal=MovieTypeDAL()
menu="""-------------豆瓣网管理系统-----------------
===========功能菜单===========
1 录入电影类型信息
2 修改电影类型信息
3 删除电影类型信息
4 显示所有电影类型信息
0 退出系统
============================="""
if __name__=="__main__":
while True:
print(menu)
option=input("请输入操作选项:")
if option=="1":
tname=input("请输入名称:")
tcontent=input("请输入内容:")
OneMovie=MovieType(tname,tcontent)
mtdal.insert(OneMovie)print("录入成功")
elif option=="2":
tid=int(input("输入要修改编号:"))
if mtdal.selectByTid(tid)!=None:
print("编号","名称","内容","创建日期")
for i in mtdal.selectByTid(tid):
if i==mtdal.selectByTid(tid)[3]:
print(datetime.datetime.strftime(i,"%Y
年%m 月%d 日"))
else:
print(i,end=" ")
print()
Column=input("输入要修改的属性:")
if Column=="编号":
Column="tid"
elif Column=="名称":
Column="tname"
elif Column=="内容":
Column="tcontent"
elif Column=="创建日期":
Column="tdate"
else:
print("请输入正确的属性名!")
if Column=="tid":
Value=int(input("输入要修改的结果:"))
elif Column=="tname" or Column=="tcontent" or
Column=="tdate":
Value=input("输入要修改的结果:")
if Column=="tid" or Column=="tname" or
Column=="tcontent":
mtdal.update(tid,Column,Value)
print("修改成功")
elif Column=="tdate":
#
print(datetime.datetime.strptime(Value,"%Y%m%d"))
mtdal.update(tid,Column,datetime.datetime.s
trptime(Value,"%Y%m%d"))
print("修改成功")
else:
print("此电影类型不存在")
elif option=="3":
tid=int(input("输入要删除的电影的 id:"))
if mtdal.selectByTid(tid)!=None:print("编号","名称","内容","创建日期")
for i in mtdal.selectByTid(tid):
if i==mtdal.selectByTid(tid)[3]:
print(datetime.datetime.strftime(i,"%Y
年%m 月%d 日"))
else:
print(i,end=" ")
print()
answer=input("确认要删除吗?(y/n):")
if answer=="y":
mtdal.delete(tid)
print("删除成功")
else :
print("此电影类型不存在")
elif option=="4":
result=mtdal.select()
print("编号","名称","内容","创建日期")
for i in result:
print(i[0],i[1],i[2],datetime.datetime.strftime
(i[3],"%Y 年%m 月%d 日"))
elif option=="0":
answer1=input("请问是否退出? (y/n):")
if answer1=="y":
print("已成功退出")
break
else:
print("不要乱来哦")

关于我对 AI 写代码的看法:

实在不会的可以参考一下,要养成善于思考的习惯。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1981969.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

大模型技术在企业应用中的实践与优化

【导读】大模型技术更新层出不穷,但对于众多企业及开发者而言,更为关键的命题则是如何进行应用落地,实现真正的智能化转型。本文系统且深入地探讨了大模型在企业应用中的关键环节和技术要点。从构建高质量的专属数据集、选择适宜的微调策略&a…

天线增益测试方法之射频器件S参数测试软件

天线增益的精确测量对于优化无线信号传输至关重要。NSAT-1000射频器件S参数测试软件作为针对S参数的测试设备,大幅提高了测试精度和效率。本文将为大家介绍该软件在天线增益测试方面的具体操作流程。 一、准备工作 在测试天线增益之前,需要准备好测试软件…

【启明智显分享】Model3A 7寸TFT触摸彩屏智能电压力锅解决方案

随着智能家居市场的快速发展,电压力锅作为厨房电器的代表之一,正逐步向智能化、高端化转型。为了进一步提升用户体验,增强产品竞争力,我们推出基于Model3A 7寸触摸彩屏电压力锅解决方案。该方案旨在通过Model3A芯片的强大性能与7寸…

24/8/5算法笔记 BGD,SGD,MGD梯度下降

今日对比不同梯度下降的代码 1.BGD大批量梯度下降(一元一次) 首先导入库 import numpy as npimport matplotlib.pyplot as plt 随机生成线性回归函数 Xnp.random.rand(100,1)w,bnp.random.randint(1,10,size2)#增加噪声,更像真实数据 #numoy广播机制…

mysql的安装与基本操作

1、centos7 中安装 mysql 8.x(1)下载安装包 wget https://downloads.mysql.com/archives/get/p/23/file/mysql-8.0.33-1.el7.x86_64.rpm-bundle.tar(2)解压 tar -xf mysql-8.0.33-1.el7.x86_64.rpm-bundle.tar(3&…

PXE实验-使用kickstart批量自动部署操作系统

实验准备:rhel7.9具备图形界面的虚拟机,虚拟机网络配置可用,VMware 中NAT的DHCP功能关闭,虚拟机中yum源已配置好 1.在虚拟机中安装kickstart并且启动图形制作工具 yum install system-config-kickstart.noarch -y system-config…

【第13章】Spring Cloud之Gateway全局异常处理

文章目录 前言一、异常处理1. 响应实体类2. 异常处理类 二、单元测试1. 无可用路由2. 服务不可用 总结 前言 网关作为我们对外服务的入口起着至关重要的作用,我们必须保证网关服务的稳定性,下面来为网关服务增加异常处理机制。 一、异常处理 1. 响应实…

动态规划.

目录 (一)递归到动规的一般转化方法 (二)动规解题的一般思路 1. 将原问题分解为子问题 2. 确定状态 3. 确定一些初始状态(边界状态)的值 4. 确定状态转移方程 (三)能用动规解…

小程序 发布流程

1: 点击HbuilderX 菜单栏上的 发行> 小程序-微信(适用于uni-app) 2: 第二步: 需要再弹出框中填写发布系小程序的名称和AppId 之后, 点击发行按钮。 3:在Hbuilder 的控制台中 查看小程序发布编译的进度。…

VMware17下载与安装

1.下载 通过百度网盘分享的文件:VMware17 链接:https://pan.baidu.com/s/1gCine3d3Rp_l3NYAu5-ojg 提取码:ek25 --来自百度网盘超级会员V3的分享 2.安装

k8s(六)---pod

六、pod(k8s中最小的调度单元) pod中可以有一个或多个容器 1、官网 2、简介 Pod是k8s中最小的调度单元、Pod具有命名空间隔离性 3、如何创建一个Pod资源(主要两种方式) 1)kubctl run ①kubectl run nginx–imagereg…

k8s(七)---标签

一、标签(适用于资源定位) label是一对key和value,创建标签后,方便对资源进行分组管理。 1.帮助 kubectl label --help 2.打标签 pod 针对于pod打标签 key是env,value是test kubectl label po nginx envtest 给pod打标签 3.查看 k…

Qcustomplot绘制实时动态曲线??

🏆本文收录于《CSDN问答解惑-专业版》专栏,主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收…

uviewPlus 组件库的使用

文章目录 1、 1、 全局引入样式文件 (该语句是文档中提及但是不存在的语句)

mysql的安装配置与基础用户使用

第五周 周一 早 mysql安装配置 1.官网下载或者wget [rootmysql ~]# ls anaconda-ks.cfg initserver.sh mysql-8.0.33-1.el7.x86_64.rpm-bundle.tar mysql-community-client-8.0.33-1.el7.x86_64.rpm mysql-community-client-plugins-8.0.33-1.el7.x86_64.rpm mysql-c…

Dockerfile 容器镜像制作 私有仓库

Dockerfile 概述 制作镜像 FROM CMD # ENTRYPOINT 与 CMD 执行方式为 ${ENTRYPOINT} ${-${CMD}} apache 镜像 nginx 镜像 php-fpm 镜像 docker 私有仓库

单位工作邮箱如何实现快速开通

单位工作邮箱如何实现快速开通?单位工作邮箱快速开通需分析需求、选合适服务商、备材料、注册验证配置MX记录、创账户。开通前需测试邮件收发、功能及安全,确保稳定运行。本文将详细介绍单位工作邮箱的前期准备以及快速开通的流程。 一、需求分析与规划…

有了谷歌账号在登录游戏或者新APP、新设备时,要求在手机上点击通知和数字,怎么办?

有的朋友可能遇到过,自己注册或购买了谷歌账号以后,在自己的手机上可以正常登录,也完成了相关的设置,看起来一切都很完美,可以愉快地玩耍了。 但是,随后要登录一个游戏的时候(或者登录一个新的…

[Web安全架构] HTTP协议

文章目录 前言1. HTTP1 . 1 协议特点1 . 2 URL1 . 3 Request请求报文1 . 3 .1 请求行1 . 3 .2 请求头1 . 3 .3 请求正文1 . 3 .4 常见传参方式 1 . 4 Response响应报文1 . 4 .1 响应行1 . 4 .2 响应头1 . 4 .3 响应正文 2. Web会话2 .1 Cookie2 .2 Session2 .3 固定会话攻击 前…

TypeScript循环

循环 循环 一直重复的做某一件事 循环需要的必须条件:1.开始条件 2.结束条件3.变量的更新 while循环允许程序在满足特定条件时重复执行一段代码块,直到条件不再满足为止 结构:while(条件表达式){ //需要重复执行的代码块 } let a:numb…