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

Python也能操作Mysql数据库

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

来源: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()

六、总结

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

相关推荐

一篇文章带你了解PHP的学习使用(php的教程)

ThinkPHP5实战...

在memcached管理php的session(memcached libevent)

PHP的session(会话管理)一般是以文件形式进行,而在多个Web服务器之间进行session管理时memecached会比文件管理方式更加方便。在这里介绍如何使用memcached管理PHP的s...

php传值和传引用的区别(php 传值和传引用)

php传值:在函数范围内,改变变量值得大小,都不会影响到函数外边的变量值。PHP传引用:在函数范围内,对值的任何改变,在函数外部也有所体现,因为传引用传的是内存地址。传值:和copy是一样的。【打个比...

PHP 常量详解教程(php常量和变量)

常量类似变量,但是常量一旦被定义就无法更改或撤销定义。PHP常量常量是单个值的标识符(名称)。在脚本中无法改变该值。有效的常量名以字符或下划线开头(常量名称前面没有$符号)。注释:与变量不同,常...

php自学零基础入门小知识(php新手入门教程)

我们就把PHP入门当成一个苹果吧!一口一口的吃掉他!不啰嗦了!开始了1、嵌入方法:类似ASP的<%,PHP可以是<?php或者是<?,结束符号是?>,当然您也可以自己指定。2、...

PHP 语法详解(php语法大全)

PHP脚本在服务器上执行,然后向浏览器发送回纯HTML结果。基础PHP语法PHP脚本可放置于文档中的任何位置。PHP脚本以<?php开头,以?>结尾:<?php...

PHP笔记(一)PHP基础知识(php必背知识点)

创建PHP程序PHP代码框架<?php>2.文件命名规则...

PHP 8新特性之Attributes(注解),你掌握了吗?

PHP8的Alpha版本,过几天就要发布了,其中包含了不少的新特性,当然我自己认为最重要的还是JIT,这个我从2013年开始参与,中间挫折无数,失败无数后,终于要发布的东东。不过,今天呢,我不打算谈J...

PHP基本语法之标记与注释(php注释规范)

1、标记由于PHP是嵌入式脚本语言,它在实际开发中经常会与HTML内容混在一起,所以为了区分HTML与PHP代码,需要使用标记对PHP代码进行标识。如:<html>...

php注解(PHP注解 性能)

目标了解和使用php注解,如果你已经掌握其他一种具有注解的语言,例如:java、python等,你在本文中只需要了解点语法就行。示例php8以前的版本,注解写在注释里,如果你掌握其他语言的注解,你是不...

数据丢失?别慌!MySQL备份恢复攻略

想象一下,某个晴朗的午后,你正享受着咖啡,突然接到紧急电话:你的网站或APP彻底挂了!系统崩溃,界面全白。虽然心头一紧,但你或许还能安慰自己:系统崩溃只是暂停服务,数据还在,修复修复就好了。然而,如果...

MySQL 日志:undo log、redo log、binlog

今天来和大家分享MySQL的三个日志文件,可以说MySQL的多数特性都是围绕日志文件实现,而其中最重要的有以下三种:...

MySQL三大日志:binlog、redolog、undolog全解析

binlog概述在MySQL数据库中,binlog可是个相当重要的存在,它的全称为binarylog,也就是二进制日志。它就像是数据库的“记忆本”,记录了所有的DDL(数据定义语言)和...

1、MySQL数据库介绍(mysql数据库简单介绍)

1.1数据库的核心定义数据库的本质数据库乃存储数据对象之容器,涵盖如下关键组件:表(Table)...

MySQL 日志双雄:实时监控与历史归档实战优化

MySQL日志双雄:实时监控+历史归档实战用这招让你家日志系统再也不卡不爆炸MySQL十亿级日志处理:从洪峰到归档全攻略手把手教你用MySQL搞定ELK级日志监控在微服务架构大行其道的今天,日志系统早...