百度360必应搜狗淘宝本站头条
当前位置:网站首页 > IT技术 > 正文

Python也能操作Mysql数据库

wptr33 2025-01-06 15:48 27 浏览

来源:Python爬虫与数据挖掘

作者: Python进阶者

大家好,我是Python进阶者。

前言

我们在进行Python编程的时候,时常要将一些数据保存起来,其中最方便的莫过于保存在文本文件了。但是如果保存的文件太大,用文本文件就不太现实了,毕竟打开都是个问题,这个时候我们需要用到数据库。提到数据库,相信大部分人都不会陌生,今天我们要学的就是数据库中小编自认为最棒的Mysql数据库了。

一、下载导入模块

为了让Python与Mysql 交互,这里我们需要用到Pymsql模块才行。

下载模块:

pip install pymysql

导入模块:

 import pymysql

二、创建数据库

打开数据库连接软件 SqlYong,如图:

输入命令:

CREATE DATABASE IF NOT EXISTS people;

这样就创建了一个people 数据库。

三、创建数据表,并写入数据

USE people;
CREATE TABLE IF NOT EXISTS student(id INT PRIMARY KEY AUTO_INCREMENT,NAME CHAR(10) UNIQUE,score INT NOT NULL,tim DATETIME)ENGINE=INNOBASE CHARSET utf8;
INSERT INTO student(NAME,score,tim)VALUES('fasd',60,'2020-06-01')
SELECT * FROM student;

通过上述操作便创建了一个数据表Student并向其中写入了数据,结果如下:

我们可以一行代码删除这个插入的 数据:

TRUNCATE student;

四、Mysql与Python建立连接

将下图中的参数依次填入初始化参数中,

db=pymysql.connect(host='localhost',user='root',password='123456',port=3306,db='people')

这样就连接到了people数据库,可以看下连接成功的打印信息:

可以看到我们打印了Mysql的版本和Host信息。

五、创建游标执行操作

1.创建游标

cur=db.cursor

2.编写插入数据表达式

sql="INSERT INTO student(NAME,score,tim)VALUES('任性的90后boy',100,now())"

3.开启游标事件

cur.begin()

4.执行数据库语句,异常判断

try:
    cur.execute(sql) 执行数据库语句
except Exception as e:
    print(e)
    db.rollback()   发生异常进行游标回滚操作
else:
    db.commit()   提交数据库操作
finally:
    cur.close()  关闭游标
    db.close()  关闭数据库

5,执行插入操作

数据库建立好后,我们可以对它们进行插入数据的操作。

import time
db=pymysql.connect(host='localhost',user='root',password='123456',port=3306,db='people')
cur=db.cursor()
db.begin()
sql="INSERT INTO student(NAME,score,tim) VALUES ('%s',%d,'%s')"
data=('HW',90,tt)
try:
  cur.execute(sql%data)
except Exception as e:
  print(e)
  db.rollback()
else:
  db.commit()
finally:
  cur.close()
  db.close()

这样就可以将数据插入进去了。我们还可以自定义插入:

import pymysql
import time
tt=time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))
db=pymysql.connect(host='localhost',user='root',password='123456',port=3306,db='people')
cur=db.cursor()
db.begin()
s=input('string:')
d=input('number:')
sql="INSERT INTO student(NAME,score,tim)VALUES('%s','%s','%s')"
try:
  data=(s,d,tt)
  cur.execute(sql%data)
except Exception as e:
  print(e)
  db.rollback()
else:
  db.commit()
finally:
  cur.close()
  db.close()

另外,我们也可以同时插入多条数据,只需先定义好所有的数据,然后在调用即可,这里需要用到插入多条数据的函数Executemany,在这里我插入十万条数据,并测试插入时间,步骤如下:


import pymysql
import time
start=time.time()
tt=time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))
db=pymysql.connect(host='localhost',user='root',password='123456',port=3306,db='people')
cur=db.cursor()
db.begin()
sql="insert into student(NAME,score,tim)values(%s,%s,%s)"
def get():
  ab=[]
  for y in range(1,100000):
    if y>=100:
      data=('user-'+str(y),str(str(float('%.f'%(y%100)))),tt)
    else:
      data=('user-'+str(y),str(y),tt)
    ab.append(data)
  return ab


try:
  data=get()
  cur.executemany(sql,data)
except Exception as e:
  print(e)
  db.rollback()
else:
  db.commit()
finally:
  print('插入数据完毕')
  cur.close()
  db.close()
  end=time.time()
  print('用时:',str(end-start))

6.执行更新操作

有些数据我们觉得它过时了,想更改,就要更新它的数据。


import time
db=pymysql.connect(host='localhost',user='root',password='123456',port=3306,db='people')
cur=db.cursor()
db.begin()
sql="update student set name='zjj' where score=100 " 当分数是100分的时候将名字改为zjj
try:
  cur.execute(sql%data)
except Exception as e:
  print(e)
  db.rollback()
else:
  db.commit()
finally:
  cur.close()
  db.close()

7.执行删除操作

有时候一些数据如果对于我们来说没有任何作用了的话了,我们就可以将它删除了,不过这里是删除数据表中的一条记录。


import pymysql
db=pymysql.connect(host='localhost',user='root',password='123456',port=3306,db='people')
cur=db.cursor()
db.begin()
sql="delete from student where name='fasd';" 当名字等于‘fasd’的时候删除这个记录
try:
  cur.execute(sql)
except Exception as e:
  print(e)
  db.rollback()
else:
  db.commit()
finally:
  cur.close()
  db.close()

你也可以删除表中所有的数据,只需将Sql语句改为:


sql='TRUNCATE student;'

当然你也可以删除表,但是一般不建议这样做,以免误删:


 DROP TABLE IF EXISTS  student;

8.执行查询操作

有时候我们需要对数据库中的数据进行查询,Python也能轻松帮我们搞定。

import pymysql
import time
tt=time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))
db=pymysql.connect(host='localhost',user='root',password='123456',port=3306,db='people')
cur=db.cursor()
db.begin()
sql="select * from student;"
try:
  cur.execute(sql)
  res=cur.fetchall() 查询数据库中的数据
  for y in res:
    print(y) 打印数据库中标的所有数据,以元祖的形式
except Exception as e:
  print(e)
  db.rollback()
else:
  db.commit()
finally:
  cur.close()
  db.close()

六、总结

在我们进行网络爬虫的时候,需要保存大量数据,这个时候数据库就派上用场了,可以更方便而且更快捷保存数据。

相关推荐

oracle数据导入导出_oracle数据导入导出工具

关于oracle的数据导入导出,这个功能的使用场景,一般是换服务环境,把原先的oracle数据导入到另外一台oracle数据库,或者导出备份使用。只不过oracle的导入导出命令不好记忆,稍稍有点复杂...

继续学习Python中的while true/break语句

上次讲到if语句的用法,大家在微信公众号问了小编很多问题,那么小编在这几种解决一下,1.else和elif是子模块,不能单独使用2.一个if语句中可以包括很多个elif语句,但结尾只能有一个...

python continue和break的区别_python中break语句和continue语句的区别

python中循环语句经常会使用continue和break,那么这2者的区别是?continue是跳出本次循环,进行下一次循环;break是跳出整个循环;例如:...

简单学Python——关键字6——break和continue

Python退出循环,有break语句和continue语句两种实现方式。break语句和continue语句的区别:break语句作用是终止循环。continue语句作用是跳出本轮循环,继续下一次循...

2-1,0基础学Python之 break退出循环、 continue继续循环 多重循

用for循环或者while循环时,如果要在循环体内直接退出循环,可以使用break语句。比如计算1至100的整数和,我们用while来实现:sum=0x=1whileTrue...

Python 中 break 和 continue 傻傻分不清

大家好啊,我是大田。...

python中的流程控制语句:continue、break 和 return使用方法

Python中,continue、break和return是控制流程的关键语句,用于在循环或函数中提前退出或跳过某些操作。它们的用途和区别如下:1.continue(跳过当前循环的剩余部分,进...

L017:continue和break - 教程文案

continue和break在Python中,continue和break是用于控制循环(如for和while)执行流程的关键字,它们的作用如下:1.continue:跳过当前迭代,...

作为前端开发者,你都经历过怎样的面试?

已经裸辞1个月了,最近开始投简历找工作,遇到各种各样的面试,今天分享一下。其实在职的时候也做过面试官,面试官时,感觉自己问的问题很难区分候选人的能力,最好的办法就是看看候选人的github上的代码仓库...

面试被问 const 是否不可变?这样回答才显功底

作为前端开发者,我在学习ES6特性时,总被const的"善变"搞得一头雾水——为什么用const声明的数组还能push元素?为什么基本类型赋值就会报错?直到翻遍MDN文档、对着内存图反...

2023金九银十必看前端面试题!2w字精品!

导文2023金九银十必看前端面试题!金九银十黄金期来了想要跳槽的小伙伴快来看啊CSS1.请解释CSS的盒模型是什么,并描述其组成部分。...

前端面试总结_前端面试题整理

记得当时大二的时候,看到实验室的学长学姐忙于各种春招,有些收获了大厂offer,有些还在苦苦面试,其实那时候的心里还蛮忐忑的,不知道自己大三的时候会是什么样的一个水平,所以从19年的寒假放完,大二下学...

由浅入深,66条JavaScript面试知识点(七)

作者:JakeZhang转发链接:https://juejin.im/post/5ef8377f6fb9a07e693a6061目录...

2024前端面试真题之—VUE篇_前端面试题vue2020及答案

添加图片注释,不超过140字(可选)...

今年最常见的前端面试题,你会做几道?

在面试或招聘前端开发人员时,期望、现实和需求之间总是存在着巨大差距。面试其实是一个交流想法的地方,挑战人们的思考方式,并客观地分析给定的问题。可以通过面试了解人们如何做出决策,了解一个人对技术和解决问...