python实训day4

news2024/9/20 22:47:06

1、查看数据库的版本

2、查看当前用户

3、查看当前数据库

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

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

6、先建数据库 gaoming

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

8、创建表的内容

9、查询表结构

10、向表中添加记录

11、查询表记录

12、ming.py

import json
import random
import time

import 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 = func
    def __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 = func
    def __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 = prefix
        self.postfix = postfix
    def __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 wrapper




def 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 = id

        self.name = name

        self.description = description

    def __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.coloradmin.cn/o/1858330.html

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

相关文章

刷题之小欧的平均数(卡码网)

小欧的平均数 这道题不看解析的话完全没有思路&#xff0c;连题目都没读明白&#xff0c;甚至看了评论答出来了还是不知道为什么&#xff0c;有知道的朋友可以教教我 #include<iostream> using namespace std;int main() {int x,y,z;cin>>x>>y>>z;//…

oracle12c到19c adg搭建(六)切换后12c备库服务器安装19c软件在19c主库升级数据字典后尝试同步

一、安装19c软件 参考文章oracle12c到19c adg搭建&#xff08;三&#xff09;oracle19c数据库软件安装 二、原主库尝试通过19c软件启动数据库 2.1复制12c的相关参数文件和密码文件到19c目录 注意:密码文件需要从已切换主库19c传过来 [oracleo12u19p ~]$ cd /u01/app/oracle…

亲测有效!性能压测异常竟能自动化分析!

性能压测是一种评估系统运行效率和稳定性的方法&#xff0c;通过模拟真实的使用场景和负载条件&#xff0c;对系统进行压力测试和负载测试&#xff0c;并对测试结果进行分析&#xff0c;以评估系统的性能&#xff0c;其中性能压测结果分析是性能压测的重要环节。以往的性能压测…

ONLYOFFICE 桌面编辑器 8.1 发布:全新功能齐备的 PDF 编辑器、丰富的幻灯片版式

前言 在当前数字化迅速发展的时代&#xff0c;办公软件套件作为企业日常工作的核心工具&#xff0c;其功能的全面性和使用的便捷性直接影响着工作效率和团队协作的效果。在众多办公软件中&#xff0c;ONLYOFFICE凭借其卓越的性能和丰富的功能&#xff0c;备受用户青睐。近日&a…

深入了解 GPT-4 和 ChatGPT 的 API---OpenAI Playground

文章目录 基本概念OpenAI API 提供的可用模型在 OpenAI Playground 中使用 GPT 模型 掌握GPT-4 和 ChatGPT 的 API 的使用方法&#xff0c;以便有效地将它们集成到 Python 应用程序中。首先&#xff0c;需要了解 OpenAI Playground。这将使你在编写代码之前更好地了解模型。接着…

React尚硅谷115-126(setState、Hooks、Fragment、context、组件优化、renderprops

122&#xff0c;context 只能用value传&#xff0c;可以传对象&#xff0c;字符串 一种组件间通信方式, 常用于【祖组件】与【后代组件】间通信 使用&#xff1a; 创建Context容器对象&#xff1a; const XxxContext React.createContext() 渲染子组时&#xff0c;外面包…

MIT6.s081 2021 Lab Utilities

Boot xv6 按照示例切换到 util 分支后&#xff0c;看到目录下包含 Makefile 文件&#xff0c;执行 make qemu 即可。 sleep 思路 借助系统调用 sleep 实现一个命令行程序&#xff0c;关键是要找到封装了系统调用的 C 函数的位置&#xff0c;根据提示&#xff1a; … user/u…

软件测试--花了我一周时间整理各种测试模板

2024软件测试面试刷题&#xff0c;这个小程序&#xff08;永久刷题&#xff09;&#xff0c;靠它快速找到工作了&#xff01;&#xff08;刷题APP的天花板&#xff09;-CSDN博客跳槽涨薪的朋友们有福了&#xff0c;今天给大家推荐一个软件测试面试的刷题小程序。https://blog.c…

北邮《计算机网络》MAC子层笔记

文章目录 缩写复习MAC层所在层次动态分配信道算法们的简要介绍信道的五条基本假设多路访问的协议&#xff08;理论上的协议&#xff09;aloha协议CSMA协议其他冲突避免协议无线局域网协议 &#xff0c;MACA 以太网协议802.3&#xff08;实际协议&#xff0c;刚刚是理论&#xf…

光猫BOB 功率调测误差分析与校验指南

DDM&#xff08;Digital Diagnostic Monitoring&#xff09;数字诊断监控技术&#xff0c;是光模块中使用的技术&#xff0c;以便用户能够监控光模块的实时参数。这些参数包括工作温度、工作电压、工作电流、发射和接收光功率等&#xff0c;还可以显示模块的常规波长、速率、传…

在Vue表单中设置缺省值

有个需求&#xff0c;在新增记录的时候&#xff0c;打开新增页面&#xff0c;员工姓名处获取到当前登录用户的用户名&#xff0c;并将其设置为缺省值。 /** 新增按钮操作 */handleAdd() {this.reset();this.open true;// this.form.employeeName this.$store.state.user.name…

计算机网络 DHCP以及防护

一、理论知识 1.DHCP&#xff1a;用于在网络中自动分配IP地址及其他网络参数&#xff08;如DNS、默认网关&#xff09;给客户端设备。 2.VLAN&#xff1a;逻辑上的局域网分段&#xff0c;用于隔离和管理不同的网络流量。 3.DHCP地址池&#xff1a;为每个VLAN配置不同的DHCP地…

【语义分割系列】基于cityscape的DDRNet算法

基于cityscape的DDRNet算法 前言 DDRNet是专门为实时语义分割设计的高效主干。该模型由两个深度分支组成,在这两个分支之间执行多次双边融合,并且还设计了一个新的上下文信息抽取器,名为深度聚合金字塔池模块(DAPPM),用于扩大有效的接受域,并基于低分辨率特征映射融合…

QT在VS环境中使用,控件显示中文乱码解决方法

首先来看乱码显示的效果如下&#xff1a; 上图左侧显示内容为中文&#xff0c;控件对应代码如下&#xff1a; QLabel* UserNameLabel new QLabel(QString("用户名&#xff1a;")); QLabel* NameLabel new QLabel(tr("姓名&#xff1a;"));下面我们对QL…

【Spine学习15】变换约束

变换约束&#xff1a;能让一个骨骼受另一个骨骼的变化影响。 1、选择m创建一个变换约束&#xff1a; 2、点击这个约束&#xff0c; 将移动数值拉的越满&#xff0c;m越接近s骨骼 当约束为0也就是默认的时候&#xff0c;m骨骼将不会受影响&#xff0c;变换约束可有可无。 tips…

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

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

数据结构与算法笔记:高级篇 - 最短路径:地图软件是如何计算出最优出行路径的?

概述 基础篇的时候&#xff0c;我们学习了图的两种搜索算法&#xff0c;深度优先搜索和广度优先搜索。这两种算法主要是针对无权图的搜索算法。针对有权图&#xff0c;也就是图中的每一条变都有一个权重&#xff0c;我们该如何计算两点之间的最短路径&#xff08;经过的边的权…

ViT:3 Compact Architecture

大模型技术论文不断&#xff0c;每个月总会新增上千篇。本专栏精选论文重点解读&#xff0c;主题还是围绕着行业实践和工程量产。若在某个环节出现卡点&#xff0c;可以回到大模型必备腔调或者LLM背后的基础模型重新阅读。而最新科技&#xff08;Mamba,xLSTM,KAN&#xff09;则…

VMware共享文件夹设置

1、VMWare设置 1&#xff09;虚拟机 -> 设置 2&#xff09;点击 选项 -> 共享文件夹 -> 设置为 总是启用 -> 并 添加一个本地共享文件夹。设置完毕&#xff0c;点击 确定。 2、创建共享文件夹、挂载 1&#xff09;打开终端&#xff0c;在mnt/目录下创建一个名为…

原Veritas(华睿泰)中国研发中心敏捷教练、项目集经理郑鹤琳受邀为第十三届中国PMO大会演讲嘉宾

全国PMO专业人士年度盛会 原Veritas&#xff08;华睿泰中国&#xff09;中国研发中心敏捷教练、项目集经理郑鹤琳女士受邀为PMO评论主办的2024第十三届中国PMO大会演讲嘉宾&#xff0c;演讲议题为“敏捷项目管理-知行合一”。大会将于6月29-30日在北京举办&#xff0c;敬请关注…