python实训day4

1、查看数据库的版本

2、查看当前用户

3、查看当前数据库

4、计算表达式的结果; 任何一个数据库,无论大小,都首先是一个超级计算器

5、查看当前MySQL环境中所有的数据库; 系统数据库(只能看)和自定义数据库(任何操作)

6、先建数据库 gaoming

7、如果表已经存在,则创建不能成功

8、创建表的内容

9、查询表结构

10、向表中添加记录

11、查询表记录

12、ming.py

import json
import random
import timeimport pymysql
from pymysql.constants import CLIENT'''生成一个随机整数,如果无参,则返回100以内的整数如果传递了参数,则返回0-参数间的随机整数
'''
def rnd(value=100):return int(random.random() * value)
'''输入两个整数参数,返回两数之间的随机值
'''
def rd(a=0, b=100):return int(a + random.random() * (b - a))
'''一个通用的父类,主要是在输出类对象时,以JSON的方式输出
'''
def tojson(dic):return json.dumps(dic, indent=4, ensure_ascii=False,default=lambda o: o.__dict__)
class BaseClass(object):def __str__(self):return json.dumps(self, indent=4,ensure_ascii=False,default=lambda obj: obj.__dict__)
'''以 10 进制表示的RGB 颜色
'''
def rgb():return 'rgb(' + str(random.randint(0, 255)) + "," + str(random.randint(0, 255)) + ',' + str(random.randint(0, 255)) + ")"
'''16 进制颜色
'''
def hexcolor():cstr = 'ABCDEF01234567890'rr = '#'for i in range(6):rr += cstr[rnd(len(cstr))]return rr
'''一个用于统计函数运行时间的装饰器类
'''
class MyTimer:def __init__(self, func):self.func = funcdef __call__(self, *args, **kwargs):begin = time.time()val = self.func(*args, **kwargs)end = time.time()print(f'用时 : {end - begin} 秒!')if val is not None:print('->', val)
'''一个用于带异常处理函数的装饰器类
'''
class ExpTry:def __init__(self, func):self.func = funcdef __call__(self, *args, **kwargs):try:ret = self.func(*args, **kwargs)if ret is not None:print('返回 ->', ret)except Exception as err:print('出错信息: ', err)return
'''一个用于统计时间的装饰器类
'''
class TimeIt:def __init__(self, prefix, postfix):self.prefix = prefixself.postfix = postfixdef __call__(self, func):def wrapper(*args, **kwargs):start = time.time()val = func(*args, **kwargs)if val is not None:print('返回 ->', val)end = time.time()print(f'{self.prefix} : {end - start} {self.postfix}!')return wrapperdef getconn(gaoming):return pymysql.connect(host='localhost',  # 127.0.0.1  主机user='root',  # 用户,使用MySQL时只用这个用户;password='root',  # 密码;就是进入MySQL数据库的登录密码port=3306,  # 端口号database='gaoming',  # 一般为自定义的数据库名称client_flag=CLIENT.MULTI_STATEMENTS)# 是否支持命令字符串可以包含多条命令

13、在新建数据库中建表


from ming import getconn
conn = getconn('gaoming')
# # 谁来负责执行SQL命令语句? 连接不会直接执行! 而是 通过连接得到的游标;
cs = conn.cursor()
sql = 'drop database if exists  gaoming'
res = cs.execute(sql)
sql = 'create database gaoming'
cs.execute(sql)
print()
sql = 'use gaoming'
cs.execute(sql)
sql = 'drop table if exists person'
cs.execute(sql)
sql = ('create table person(sid int auto_increment primary key,''sname varchar(20) not null,sage int not null)')
cs.execute(sql)
conn.commit()
print("*** ok ***")

向表添加记录

from ming import getconn, rd
from faker import Faker
import random  # 导入random模块ff = Faker("zh_CN")
conn = getconn("gaoming")
cs = conn.cursor()# 向表Person中插入一条记录
sql = 'insert into person(sname,sage) values(%s,%s)'
data = [(ff.name(), rd(16, 33)) for k in range(11)]
cs.executemany(sql, data)
conn.commit()cs.close()
conn.close()
print("*** end  ***")

查看表person的内容:

14、利用With子句批量插入记录

from ming import getconn, rd
from faker import Faker
ff = Faker("zh_CN")
conn = getconn("xiaoming")
cs = conn.cursor()
#  向表Person中插入多条记录;
sql = 'insert into person(sname,sage) values(%s,%s)'
data = [(ff.name(), rd(16, 33)) for k in range(5)]
# cs = conn.cursor()
with conn.cursor() as cs:effect = cs.executemany(sql, data)conn.commit()print("*** 成功插入 %d 行记录! ***" % (effect))

15、删除记录

from ming import getconn, rd
from faker import Faker
ff = Faker("zh_CN")
conn = getconn("gaoming")
# cs = conn.cursor()
#  根据条件删除表中的记录;
sql = 'delete from person where sid > %s and sage > %s'
data = [(10, 25)]
with conn.cursor() as cs:effect = cs.executemany(sql, data)print("*** 成功删除 %d 行记录! ***" % (effect))conn.commit()

16、更新记录

from faker import Faker
from ming import getconn
ff = Faker("zh_CN")
conn = getconn("xiaoming")
#  根据条件更新表中的记录;
sql = 'update person set sage=sage+1 where sid < 27'
with conn.cursor() as cs:effect = cs.execute(sql)print("*** 成功更新 %d 行记录! ***" % (effect))conn.commit()

17、无条件查询;  select * from tablename

dept.py:

class Dept:def __init__(self, id, name, description):self.id = idself.name = nameself.description = descriptiondef __str__(self):return f"Dept(id={self.id}, name={self.name}, description={self.description})"
from vip.ming import getconn
from vvip.dept import Dept
conn = getconn("gaoming")
# 无条件查询记录:
sql = 'select * from dept'
depts = []
with conn.cursor() as cs:res = cs.execute(sql)print("*** 共有 %d 条记录 ***" % res)# rows = cs.fetchone()# print(rows)# rows = cs.fetchmany(3)# print(rows)rows = cs.fetchall()for row in rows:dept = Dept(row[0], row[1], row[2])depts.append(dept)
for dept in depts:print(dept)

有条件单行查询; select * from tbname where id=22;

from ming import getconn
conn = getconn("gaoming")
# 有条件查询记录:
sql = 'select empno,ename,job,sal  from emp where empno=7369'
with conn.cursor() as cs:res = cs.execute(sql)print('res ->', res)rr = cs.fetchone()for r in rr:print('->', r)

有条件多行查询; select * from tbname where id >34;

from vip.ming import getconn
conn = getconn("gaoming")
# 有条件查询多条记录:
sql = ('select empno,ename,job,sal from emp where ''empno between %s  and %s')
data = [(7788, 7844)]
with conn.cursor() as cs:res = cs.executemany(sql, data)print("*** 读取到 %d 行记录! ***" % res)rows = cs.fetchall()for row in rows:print('->', row)

18、导入scott.sql

19、

from ming import getconn
conn = getconn("gaoming")
print()
sql = ("select * from dept;select empno,ename,sal from emp ""where empno in (7369, 7788, 7934);""select * from person limit 3")
with conn.cursor() as cs:cs.execute(sql)rows = cs.fetchall()for row in rows:print('->', row)print()cs.nextset()rows = cs.fetchall()for row in rows:print('->', row)print()cs.nextset()rows = cs.fetchall()for row in rows:print('->', row)

20、

from ming import getconn
conn = getconn("gaoming")
print()
sql = ["select * from dept","select empno,ename,job,sal from emp where empno in (%s,%s)","select * from person limit %s,%s"]
params = [(),#查询 `dept` 表中的所有记录,不需要参数(7369, 7788),(3, 3)#查询 `person` 表中,从第4条开始取3条记录)。]
cs = conn.cursor()
for cmd, param in zip(sql, params):cs.execute(cmd, param)rows = cs.fetchall()for row in rows:print('->', row)print()

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

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

相关文章

【ai】tx2 nx: jetson Triton Inference Server 运行YOLOv4

【ai】tx2 nx: jetson Triton Inference Server 部署YOLOv4 部署了服务端。需要对其测试【ai】tx2-nx 查看 jetpack 版本信息及对应的tritonserver【ai】tx2-nx:配置tritonserver2.17.0-jetpack4.6 环境并运行例子C++ Triton YoloV4 client 是基于 r21.05的 服务端的tensort 的…

springboot3 连接 oceanbase + logproxy数据同步到redis

我这用的是 社区版的 单机&#xff0c; rocky liunx 安装oceanbase 注意事项&#xff1a; logproxy 是 CDC 模式 &#xff0c; springboot 可以直接订阅 canal 是 binlog模式&#xff0c; canal 订阅 logproxy&#xff0c; springboot 订阅 canal logproxy 也可以转 bi…

嵌入式实验---实验七 SPI通信实验

一、实验目的 1、掌握STM32F103SPI通信程序设计流程&#xff1b; 2、熟悉STM32固件库的基本使用。 二、实验原理 1、使用STM32F103R6通过74HC595控制一位LID数码管&#xff0c;实现以下两个要求&#xff1a; &#xff08;1&#xff09;数码管从0到9循环显示&#xff1b; …

无人机巡检小羊仿真

详细视频地址 仿真效果 可视化三维仿真 gazebo物理仿真 px4 飞控仿真 仿qgc简易地面站 详细视频地址

计算机组成原理 | CPU子系统(1)基本概述

基本结构模型 运算与缓存部件 数据寄存部件 PSW不是很清楚 存储器是什么&#xff1f;属于那个结构里&#xff1f; 时序处理部件 cpu是大脑&#xff0c;控制器是神经元 ①通过硬件产生控制信号 ②通过软件产生控制信号 外频&#xff08;系统时钟信号&#xff09;&#xff0c;…

我是如何在markdown编辑器中完成视频的插入和播放的

如果你有更好用的编辑器组件&#xff0c;请一定推荐给我!!!&#xff08;最好附带使用说明&#x1f913;️&#xff09; 介绍 在开发一个社区页面的时候&#xff0c;需要完成发帖、浏览帖子的能力。这里考虑接入markdown编辑器进行开发&#xff0c;也符合大多数用户的习惯。 …

板凳--------第20章-信号:基本概念1

tlpi_hdr.h头文件使用及设置 liao__ran 于 2020-09-29 15:12:01 发布 阅读量1.6k 收藏 5 点赞数 1 分类专栏&#xff1a; linux系统编程手册 版权 linux系统编程手册 专栏收录该内容 7 篇文章 1 订阅 订阅专栏 使用的头文件&#xff0c;主要如下&#xff1a; ename.c.inc erro…

7.XSS获取键盘记录(存储型xss)

什么是跨域 http:// www . xyz.com : 8080 / script/test.js 协议 子域名 主域名 端口 资源地址 当协议、主机&#xff08;主域名&#xff0c;子域名&#xff09;、端口中的任意一个不相同时&#xff0c;称为不同域 我们把不同的域之间请求数据的操作&#xff0c;成为跨域操作…

MOC和MCS通讯流程分析

半导体行业-SECS/GEM协议 半导体设备通讯SECS协议是由国际半导体设备与材料协会&#xff08;SEMI&#xff09;的会员一起构建的连接性标准。它最初是为了在半导体/电子行业的自动化中实现设备与主机系统之间的通信而制定的。 SECS/GEM不仅允许客户查看设备的功能&#xff0c;…

GandCrab5.2勒索病毒复现

GandCrab第一代勒索病毒首次出现于2018年1月&#xff0c;后面经历了五个大版本的更新迭代&#xff0c;该系列病毒特征是采用RSAAES加密算法&#xff0c;从算法上分析解密难度较大&#xff0c;会将系统中的大部分文件加密为随机后缀名的文件&#xff0c;然后对用户进行勒索。本实…

8.12 矢量图层面要素单一符号使用六(SVG填充)

文章目录 前言SVG填充&#xff08;SVG fill&#xff09;QGis设置面符号为SVG填充&#xff08;SVG fill&#xff09;SVG填充&#xff08;SVG fill&#xff09; 总结 前言 本章介绍矢量图层线要素单一符号中使用SVG填充&#xff08;SVG fill&#xff09;的使用说明&#xff1a;文…

ARM相关理论知识

一、计算机的组成 1.输入设备&#xff1a;将数据与程序转换成计算机能够识别&#xff0c;存储&#xff0c;运算的形式&#xff0c;输送到计算机中。 2.输出设备&#xff1a;将计算机对程序和数据的运算结果输送到计算机外部设备 3.控制器&#xff1a;由程序技术器&#xff0…

SpringMVC系列十: 中文乱码处理与JSON处理

文章目录 中文乱码处理自定义中文乱码过滤器Spring提供的过滤器处理中文 处理json和HttpMessageConverter<T>处理JSON-ResponseBody处理JSON-RequestBody处理JSON-注意事项和细节HttpMessageConverter<T\>文件下载-ResponseEntity<T\>作业布置 上一讲, 我们学…

假冒国企现形记:股权变更视角下的甄别分析

启信慧眼-启信宝企业版 假冒国企公告2024-06-07&#xff0c;中粮集团有限公司官网发布《关于冒名中粮企业名单公告》。公告显示&#xff0c;”有不法分子通过伪造相关材料等方式&#xff0c;以我集团子公司名义开展业务&#xff0c;进行虚假宣传。经核实&#xff0c;上述公司假…

伸展树(数据结构篇)

数据结构之伸展树 伸展树 概念&#xff1a; 伸展树是一颗对任意一个节点被访问后&#xff0c;就经过一系列的AVL树的旋转操作将该节点放到根上的特殊二叉查找树。伸展树能保证对树操作M次的时间复杂度为O(MlogN)&#xff0c;而当一个查找树的一个节点刚好处于查找树最坏的情…

物联网系统运维——实验备份与恢复,数据镜像软件DRBD介绍,DRBD的安装和应用,extundelete的安装和应用(重点),环境准备,配置设置

一.数据备份 1.数据备份的重要性 备份是系统中需要考虑的最重要的事项,虽然这在系统的整个规划,开发和测试过程中甚至占不到1%,看似不太重要且默默无闻的工作只有到恢复的时候才能真正体现出其重要性,任何数据的丢失与数据宕机&#xff0c;都是不可以被接收的。 2.数据备份策…

基于Pytorch框架构建LeNet-5模型

Pytorch 一、训练模型1.导入必要的库2.设置超参数3.数据预处理4.读取数据 二、定义卷积神经网络1.定义卷积神经网络2.定义学习率3.实例化模型并且移动到GPU4.选择优化器 三、定义调整学习率的函数1.定义调整学习率的函数 四、训练模型1.设置模型为训练模式2.遍历训练数据加载器…

【Day02】0基础微信小程序入门-学习笔记

文章目录 模板与配置学习目标WXML 模板语法1.数据绑定&#xff08;类似于 Vue2 &#xff09;2. 事件绑定3. 条件渲染4.列表渲染 WXSS模板样式1. rpx尺寸单位2.样式导入3. 全局样式和局部样式 全局配置1. window2. tabBar 页面配置网络数据请求总结 持续更新~ 模板与配置 学习目…

gateway整合sentinel限流

官方文档&#xff1a;https://github.com/alibaba/Sentinel/wiki/%E7%BD%91%E5%85%B3%E9%99%90%E6%B5%81 从 1.6.0 版本开始&#xff0c;Sentinel 提供了 Spring Cloud Gateway 的适配模块&#xff0c;可以提供两种资源维度的限流&#xff1a; route 维度&#xff1a;即在 Spr…

【第28章】Vue实战篇之用户重置密码

文章目录 前言一、调用接口二、重置密码三、界面展示总结 前言 这里我们来通过调用后端接口来完成密码重置功能并且修改成功清除缓存重新登录。 一、调用接口 export const userResetPasswordService (data)>{return request.patch(/user/updatePwd, data) }二、重置密码…