MySQL 复制建表、操作补充、pymysql操作—/—<10>

ops/2024/11/15 0:43:17/

一、复制建表

1、复制其他表的结构

只复制结构,不复制值

CREATE TABLE aaa LIKE student

student表:

复制完的a表:

2、复制查询结果并建表:

create table a (select id,sum(score) as sum_sco from score group by id)

score表结构如图所示: 创建的a表:  

二、基础语言补充

1、查询建表语句

show CREATE table student

2、查询可视化的建表语句

DESC student

3、修改表字符集

alter table student character set 字符集名称;

4、增加一列

alter table 表名 add 列名 数据类型;

5、修改列名、类型

alter table 表名 change 列名 新列名 新数据类型
alter table 表名 modify 列名 新数据类型

6、删除列

alter table 表明 drop 列名;

7、删除表

drop table 表名;
drop table if exists 表名;

8、插入数据

insert into stu select * from student limit 500,500;

即从student表中取出从行500开始往后数500条数据,将这些数据插入stu表

9、去重

select distinct name from student

将学生表去除重复值

三、用Python连接SQL

1、导包

pip install pymysql

2、连接SQL

conn=pymysql.connect(host='192.168.197.100',user='root',passwd='123456',port=3306,db='ai_03')

其中host为主机ip,user为登入的用户,passwd为用户密码,port为端口,db为数据库

3、数据库游标

        数据库游标是指一个指向数据库中某个特定数据项的指针。通过使用游标,可以在数据库中遍历数据,查找、修改或删除指定的数据项。游标可以被认为是一个迭代器,它允许我们在数据库中按顺序访问数据。

conn=pymysql.connect(host='192.168.197.100',user='root',passwd='123456',port=3306,db='ai_03')
#建立连接后,建立游标用来获取信息
cursor=conn.cursor()

4、建立查询,查询数据

conn=pymysql.connect(host='192.168.197.100',user='root',passwd='123456',port=3306,db='ai_03')
#建立连接后,建立游标用来获取信息
cursor=conn.cursor()#查询数据
#书写sql中的查询语句
#此时如果在上述建立连接时没有使用db来确认数据库,需要在获取信息的时候使用库名
#如果没有写,那么直接写表名即可
select_sql="select * from ai_03.student"

5、执行查询指令

conn=pymysql.connect(host='192.168.197.100',user='root',passwd='123456',port=3306,db='ai_03')
#建立连接后,建立游标用来获取信息
cursor=conn.cursor()#查询数据
select_sql="select * from student"#用游标执行查询语句
cursor.execute(select_sql)

6、获取数据

conn=pymysql.connect(host='192.168.197.100',user='root',passwd='123456',port=3306,db='ai_03')
#建立连接后,建立游标用来获取信息
cursor=conn.cursor()#查询数据
select_sql="select * from student"#用游标执行查询语句
cursor.execute(select_sql)#获取数据
#获取一条数据
print(cursor.fetchone())
#获取9条数据,元祖类型返回
print(cursor.fetchmany(9))
#获取全部数据
print(cursor.fetchall())

        上述代码中cursor.fetchone()获取一条数据后,后面在使用fetchmany()获取多条数据,此时会接着从后面获取数据,而不是从头开始获取,元组形式打印

        此时可以通过for循环来遍历其中的值,例如

conn=pymysql.connect(host='192.168.197.100',user='root',passwd='123456',port=3306,db='ai_03')
#建立连接后,建立游标用来获取信息
cursor=conn.cursor()#查询数据
select_sql="select * from student"#用游标执行查询语句
cursor.execute(select_sql)#遍历每条数据
for i in cursor.fetchall():print(i[1])

此时可以打印每条数据中的第二个:

7、关闭游标、关闭连接

获取完数据记得关闭游标和连接

cursor.close() #关闭游标
conn.close()  #关闭连接

8、插入数据,发送事务

#建立连接
conn=pymysql.connect(host='192.168.197.100',user='root',passwd='123456',port=3306,db='ai_03')
#建立游标
cursor=conn.cursor()#创建一个表
create_sql = create table if not exists aaa(id int,name varchar(255))  
cursor.execute(create_sql)
#插入数据
insert_sql = "insert into aaa values(1,'hx')"
cursor.excute(insert_sql)
#执行insert语句时,需要提交事务
conn.commit()cursor.close()
conn.close()

9、insert问题

1)外界传入一条数据
#建立连接
conn=pymysql.connect(host='192.168.197.100',user='root',passwd='123456',port=3306,db='ai_03')
#建立游标
cursor=conn.cursor()#创建一个表,并定义主键及自增列
create_sql = create table aaa(id INT PRIMARY KEY AUTO_INCREMENT,name VARCHAR(255))  
cursor.execute(create_sql)#外界传入一条数据
name_a='hhx'
insert_sql = f"INSERT INTO aaa VALUES(0,"{name_a}")" #此时{}外面需要给引号
#使用execute发送指令
cursor.execute(insert_sql)conn.commit()cursor.close()
conn.close()

2)外界传入多条数据

#外界传入多条数据
name_a=['hx1','hx2','hx3']
insert_sql = f"INSERT INTO aaa VALUES(0,%s)" #此时使用%s来表示传入参数
#此时使用executemanty来接收多条数据
cursor.executemany(insert_sql,name_a) #第一个参数用来接收指令,第二个参数用来接收可迭代对象
conn.commit()cursor.close()
conn.close()

如果外界传入数据为多列的,只需要多增加几个%s即可,如下列代码所示

name_a=[('hx',14),('hhh',22),('sas',15)]
insert_sql="insert into aaa values(0,%s,%s,%s)" #0是占位用的,因为有id自增列

3)回滚事务

如果使用insert插入语句时出现错误,回滚事务,全部撤回

name_a=[('hx',14),('hhh',22),('sas',15)]
insert_sql="insert into aaa values(0,%s,%s,%s)" #0是占位用的,因为有id自增列cursor.executement(insert_sql,name_a)
#判断,如果出现错误,回滚事务
try:conn.commit()
except Exception as e:conn.rollback()cuesor.close()
conn.close()


http://www.ppmy.cn/ops/95815.html

相关文章

python爬取豆瓣电影数据

目录 一、背景 二、分析网站 1、ajax请求 三、代码实现 1、导包 2、面向对象实现 3、发送请求 4、解析数据 5、保存数据 6、定义主函数 7、实例化对象运行主函数 8、运行效果 四、以下是全部完整代码 五、报错解决 1、数据库连接报错 2、数据插入报错 一、背景…

华为手机ip地址怎么换:更换指南,轻松操作

在数字化时代,智能手机已成为我们日常生活中不可或缺的一部分。无论是工作、学习还是娱乐,手机都扮演着至关重要的角色。然而,随着网络环境的日益复杂,保护个人隐私和网络安全变得尤为重要。更换手机IP地址,作为提升网…

【Vue-video】Video 封装组件-Copy直接用解决封装BUG

前言 这个 Vue 组件是通过组合式API编写的的语法。 大家在使用 video 的时候是不是都在为这个视频资源需要销毁问题烦恼,但你今天不用担心,我来为你解答错误封装的 BUG,直接上源代码。 效果图 代码 请先确保自己已经通过命令安装了 video &…

pywebview 入门

pywebview 入门 文档地址 地址 https://pywebview.flowrl.com/guide/ 一、pywebview 简介 1. 什么是 pywebview? pywebview 是一个轻量级的 python 库,旨在简化桌面应用程序的开发。它利用系统的 WebView 组件,使得开发人员可以使用现代 …

字符串值提取工具-09-java 执行 json 解析, json-path

值提取系列 字符串值提取工具-01-概览 字符串值提取工具-02-java 调用 js 字符串值提取工具-03-java 调用 groovy 字符串值提取工具-04-java 调用 java? Janino 编译工具 字符串值提取工具-05-java 调用 shell 字符串值提取工具-06-java 调用 python 字符串值提取工具-…

XSS DOM破坏实战案例

目录 案例一 思考 源码分析 查找问题 实现 案例二 查看源码 问题查找 实现 实验环境:DOM clobbering | Web Security Academy (portswigger.net) 案例一 里面是一篇篇的博客,点击进去里面是一些评论 思考 尝试一些常规的xss 没什么效果... 他将…

Linux - 基础工具使用

文章目录 一、yum1、介绍2、功能3、语法4、使用 二、rzsz1、安装rzsz的指令2、介绍3、使用 三、vim基础使用1、介绍2、基础使用 四、gcc/g使用1、生成可执行文件过程2、语法3、常用选项4、编译过程5、动静态库6、包含头文件的多文件编译7、链接外部库 一、yum 1、介绍 Linux中…

mysql中的innodb存储结构

什么是InnoDB存储引擎 InnoDB是MySQL的默认存储引擎,它是一个事务安全的存储引擎,支持行级锁定和外键约束。InnoDB为MySQL提供了高性能、高可靠性和高可用性的解决方案。 InnoDB 的核心特点和功能 事务支持:InnoDB支持ACID事务特性&#x…