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

一、复制建表

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()

  • 13
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
<div style=";text-align:center;;height:auto;" class="datagrid-cell datagrid-cell-c1-checkId">已通过</div></td><td field="button"><div style=";height:auto;" class="datagrid-cell datagrid-cell-c1-button"><a href="#" style="color: red" onclick="fileManager(0)">图片管理</a></div></td><td field="truckNo"><div style=";height:auto;" class="datagrid-cell datagrid-cell-c1-truckNo">辽PD6885</div></td><td field="truckCardColor"><div style=";text-align:center;;height:auto;" class="datagrid-cell datagrid-cell-c1-truckCardColor">黄牌</div></td><td field="vtNam"><div style=";height:auto;" class="datagrid-cell datagrid-cell-c1-vtNam">秦皇岛九福物流有限公司</div></td><td field="driverNam"><div style=";height:auto;" class="datagrid-cell datagrid-cell-c1-driverNam">叶红建</div></td><td field="linkTel"><div style=";height:auto;" class="datagrid-cell datagrid-cell-c1-linkTel">13842929049</div></td><td field="workCompanyCod"><div style=";text-align:center;;height:auto;" class="datagrid-cell datagrid-cell-c1-workCompanyCod">金海粮油</div></td><td field="cargoNam" style="display:none;"><div style=";height:auto;" class="datagrid-cell datagrid-cell-c1-cargoNam"></div></td><td field="consignCod" style="display:none;"><div style=";height:auto;" class="datagrid-cell datagrid-cell-c1-consignCod"></div></td><td field="planDte"><div style=";height:auto;" class="datagrid-cell datagrid-cell-c1-planDte">2023-05-01</div></td><td field="validTyp"><div style=";height:auto;" class="datagrid-cell datagrid-cell-c1-validTyp">当天有效</div></td><td field="ifEnd"><div style=";height:auto;" class="datagrid-cell datagrid-cell-c1-ifEnd">x</div></td><td field="individualId" style="display:none;"><div style=";height:auto;" class="datagrid-cell datagrid-cell-c1-individualId">0</div></td><td field="rejectReason"><div style=";height:auto;" class="datagrid-cell datagrid-cell-c1-rejectReason"></div></td><td field="checkNam"><div style=";height:auto;" class="datagrid-cell datagrid-cell-c1-checkNam">jhly</div></td><td field="checkTim"><div style=";height:auto;" class="datagrid-cell datagrid-cell-c1-checkTim">2023-04-29 21:09</div></td>以上代码为网页源码,帮我写一段python程序从以上代码中找出drivernam和checkTim并保存数据库
06-13
可以使用BeautifulSoup和pymysql库来实现该功能。以下是示例代码: ``` python from bs4 import BeautifulSoup import pymysql # 解析网页源码 html = """ <div style=";text-align:center;;height:auto;" class="datagrid-cell datagrid-cell-c1-checkId">已通过</div></td><td field="button"><div style=";height:auto;" class="datagrid-cell datagrid-cell-c1-button"><a href="#" style="color: red" onclick="fileManager(0)">图片管理</a></div></td><td field="truckNo"><div style=";height:auto;" class="datagrid-cell datagrid-cell-c1-truckNo">辽PD6885</div></td><td field="truckCardColor"><div style=";text-align:center;;height:auto;" class="datagrid-cell datagrid-cell-c1-truckCardColor">黄牌</div></td><td field="vtNam"><div style=";height:auto;" class="datagrid-cell datagrid-cell-c1-vtNam">秦皇岛九福物流有限公司</div></td><td field="driverNam"><div style=";height:auto;" class="datagrid-cell datagrid-cell-c1-driverNam">叶红建</div></td><td field="linkTel"><div style=";height:auto;" class="datagrid-cell datagrid-cell-c1-linkTel">13842929049</div></td><td field="workCompanyCod"><div style=";text-align:center;;height:auto;" class="datagrid-cell datagrid-cell-c1-workCompanyCod">金海粮油</div></td><td field="cargoNam" style="display:none;"><div style=";height:auto;" class="datagrid-cell datagrid-cell-c1-cargoNam"></div></td><td field="consignCod" style="display:none;"><div style=";height:auto;" class="datagrid-cell datagrid-cell-c1-consignCod"></div></td><td field="planDte"><div style=";height:auto;" class="datagrid-cell datagrid-cell-c1-planDte">2023-05-01</div></td><td field="validTyp"><div style=";height:auto;" class="datagrid-cell datagrid-cell-c1-validTyp">当天有效</div></td><td field="ifEnd"><div style=";height:auto;" class="datagrid-cell datagrid-cell-c1-ifEnd">x</div></td><td field="individualId" style="display:none;"><div style=";height:auto;" class="datagrid-cell datagrid-cell-c1-individualId">0</div></td><td field="rejectReason"><div style=";height:auto;" class="datagrid-cell datagrid-cell-c1-rejectReason"></div></td><td field="checkNam"><div style=";height:auto;" class="datagrid-cell datagrid-cell-c1-checkNam">jhly</div></td><td field="checkTim"><div style=";height:auto;" class="datagrid-cell datagrid-cell-c1-checkTim">2023-04-29 21:09</div></td> """ soup = BeautifulSoup(html, 'html.parser') # 获取driverNam和checkTim的值 driverNam = soup.find('td', {'field': 'driverNam'}).text.strip() checkTim = soup.find('td', {'field': 'checkTim'}).text.strip() # 将数据保存到数据库中 conn = pymysql.connect(host='localhost', user='root', password='password', database='test') cur = conn.cursor() sql = "INSERT INTO table_name (driverNam, checkTim) VALUES (%s, %s)" values = (driverNam, checkTim) cur.execute(sql, values) conn.commit() cur.close() conn.close() ``` 需要将代码中的`table_name`替换为实际表名,以及修改数据库连接参数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

菜就多练_0828

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值