脚本之家,脚本语言编程技术及教程分享平台!
分类导航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服务器之家 - 脚本之家 - Python - Python也能操作MySQL数据库

Python也能操作MySQL数据库

2021-08-03 00:01Python爬虫与数据挖掘Python进阶者 Python

我们在进行Python编程的时候,时常要将一些数据保存起来,其中最方便的莫过于保存在文本文件了。今天我们要学的就是数据库中小编自认为最棒的Mysql数据库了。

Python也能操作MySQL数据库

大家好,我是Python进阶者。

前言

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

一、下载导入模块

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

下载模块:

  1. pip install pymysql 

导入模块:

  1. import pymysql 

二、创建数据库

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

Python也能操作MySQL数据库

输入命令:

  1. CREATE DATABASE IF NOT EXISTS people; 

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

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

  1. USE people; 
  2. 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; 
  3. INSERT INTO student(NAME,score,tim)VALUES('fasd',60,'2020-06-01'
  4. SELECT * FROM student; 

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

Python也能操作MySQL数据库

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

  1. TRUNCATE student; 

四、MySQL与Python建立连接

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

Python也能操作MySQL数据库

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

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

Python也能操作MySQL数据库

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

五、创建游标执行操作

1.创建游标

  1. cur=db.cursor 

2.编写插入数据表达式

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

3.开启游标事件

  1. cur.begin() 

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

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

5.执行插入操作

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

  1. import time 
  2. db=pymysql.connect(host='localhost',user='root',password='123456',port=3306,db='people'
  3. cur=db.cursor() 
  4. db.begin() 
  5. sql="INSERT INTO student(NAME,score,tim) VALUES ('%s',%d,'%s')" 
  6. data=('HW',90,tt) 
  7. try: 
  8.   cur.execute(sql%data) 
  9. except Exception as e: 
  10.   print(e) 
  11.   db.rollback() 
  12. else
  13.   db.commit() 
  14. finally: 
  15.   cur.close() 
  16.   db.close() 

Python也能操作MySQL数据库

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

  1. import pymysql 
  2. import time 
  3. tt=time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time())) 
  4. db=pymysql.connect(host='localhost',user='root',password='123456',port=3306,db='people'
  5. cur=db.cursor() 
  6. db.begin() 
  7. s=input('string:'
  8. d=input('number:'
  9. sql="INSERT INTO student(NAME,score,tim)VALUES('%s','%s','%s')" 
  10. try: 
  11.   data=(s,d,tt) 
  12.   cur.execute(sql%data) 
  13. except Exception as e: 
  14.   print(e) 
  15.   db.rollback() 
  16. else
  17.   db.commit() 
  18. finally: 
  19.   cur.close() 
  20.   db.close() 

Python也能操作MySQL数据库

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

  1. import pymysql 
  2. import time 
  3. start=time.time() 
  4. tt=time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time())) 
  5. db=pymysql.connect(host='localhost',user='root',password='123456',port=3306,db='people'
  6. cur=db.cursor() 
  7. db.begin() 
  8. sql="insert into student(NAME,score,tim)values(%s,%s,%s)" 
  9. def get(): 
  10.   ab=[] 
  11.   for y in range(1,100000): 
  12.     if y>=100: 
  13.       data=('user-'+str(y),str(str(float('%.f'%(y%100)))),tt) 
  14.     else
  15.       data=('user-'+str(y),str(y),tt) 
  16.     ab.append(data) 
  17.   return ab 
  18.  
  19. try: 
  20.   data=get() 
  21.   cur.executemany(sql,data) 
  22. except Exception as e: 
  23.   print(e) 
  24.   db.rollback() 
  25. else
  26.   db.commit() 
  27. finally: 
  28.   print('插入数据完毕'
  29.   cur.close() 
  30.   db.close() 
  31.   end=time.time() 
  32.   print('用时:',str(end-start)) 

6.执行更新操作

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

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

Python也能操作MySQL数据库

7.执行删除操作

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

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

Python也能操作MySQL数据库

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

  1. sql='TRUNCATE student;' 

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

  1. DROP TABLE IF EXISTS  student; 

8.执行查询操作

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

  1. import pymysql 
  2. import time 
  3. tt=time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time())) 
  4. db=pymysql.connect(host='localhost',user='root',password='123456',port=3306,db='people'
  5. cur=db.cursor() 
  6. db.begin() 
  7. sql="select * from student;" 
  8. try: 
  9.   cur.execute(sql) 
  10.   res=cur.fetchall() 查询数据库中的数据 
  11.   for y in res: 
  12.     print(y) 打印数据库中标的所有数据,以元祖的形式 
  13. except Exception as e: 
  14.   print(e) 
  15.   db.rollback() 
  16. else
  17.   db.commit() 
  18. finally: 
  19.   cur.close() 
  20.   db.close() 

六、总结

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

原文链接:https://mp.weixin.qq.com/s/3GuUDYP-bVUMtRqXCUdcSg

延伸 · 阅读

精彩推荐