前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【爬虫】(六)Python数据存储之MySQL(上)

【爬虫】(六)Python数据存储之MySQL(上)

作者头像
一点儿也不潇洒
发布2018-08-07 10:13:50
5590
发布2018-08-07 10:13:50
举报
文章被收录于专栏:肖洒的博客肖洒的博客

PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务器的一个库,Python2中则使用mysqldb。 PyMySQL 遵循 Python 数据库 API v2.0 规范,并包含了 pure-Python MySQL 客户端库。

PyMySQL 安装

在使用 PyMySQL 之前,我们需要确保 PyMySQL 已安装。 PyMySQL 下载地址:https://github.com/PyMySQL/PyMySQL。 如果还未安装,我们可以使用以下命令安装最新版的 PyMySQL:

代码语言:javascript
复制
pip install PyMySQL  

强烈建议使用pip,实在是神器。 虽说Python安装第三方库全是看运气,但是自从上手Python3,一直pip从未出错。

之前讲的是讲教务处的数据爬下来存储CSV格式的,现将CSV文件导入MySQL。

用MySQL创建数据库和数据库表

不会就去学,才是最实用的学习方法。

本科阶段学过一门数据库的课,SQL,但是早都忘完了。但是概念还是,上手还是很容易的,

1、使用SHOW语句找出在服务器上当前存在什么数据库:SHOW DATABASES;

代码语言:javascript
复制

mysql> SHOW DATABASES;
+--------------------+
| Database   |
+--------------------+
| information_schema |
| mysql  |
| performance_schema |
| sys|
+--------------------+
4 rows in set (0.03 sec)

2、创建一个数据库abccs: CREATE DATABASE test12;

代码语言:javascript
复制
mysql> CREATE DATABASE test12; 

注意不同操作系统对大小写的敏感。

3、选择你所创建的数据库:USE test12

代码语言:javascript
复制
mysql> USE test12 
Database changed 

此时你已经进入你刚才所建立的数据库test12.

4、 创建一个数据库表:CREATE TABLE student (); 首先看现在你的数据库中存在什么表:

代码语言:javascript
复制
mysql> SHOW TABLES; 
Empty set (0.00 sec) 

说明刚才建立的数据库中还没有数据库表。下面来创建一个数据库表student:

我们要建立一个学生信息的便,表的内容包含学生:学号、姓名、培养单位、入学年月、专业、导师。

代码语言:javascript
复制
mysql> CREATE TABLE student (id INT,name VARCHAR(20),academy VARCHAR(20),enrollm
entdate DATE,major VARCHAR(20),advisor VARCHAR(20));

由于name等列值是变化的,因此选择VARCHAR,其长度不一定是20。可以选择从1到255的任何长度,如果以后需要改变它的字长,可以使用ALTER TABLE语句。入学日期列则使用DATE数据类型。 创建了一个表后,我们可以看看刚才做的结果,用SHOW TABLES显示数据库中有哪些表:

代码语言:javascript
复制
mysql> SHOW TABLES;
+------------------+
| Tables_in_test12 |
+------------------+
| student  |
+------------------+
1 row in set (0.00 sec)

5、显示表的结构: DESCRIBE mytable;

代码语言:javascript
复制
mysql> DESCRIBE student;
+----------------+-------------+------+-----+---------+-------+
| Field  | Type| Null | Key | Default | Extra |
+----------------+-------------+------+-----+---------+-------+
| id | int(11) | YES  | | NULL|   |
| name   | varchar(20) | YES  | | NULL|   |
| academy| varchar(20) | YES  | | NULL|   |
| enrollmentdate | date| YES  | | NULL|   |
| major  | varchar(20) | YES  | | NULL|   |
| advisor| varchar(20) | YES  | | NULL|   |
+----------------+-------------+------+-----+---------+-------+
6 rows in set (0.02 sec)

6、 往表中加入记录

我们先用SELECT命令来查看表中的数据: mysql> select * from student; Empty set (0.00 sec) 这说明刚才创建的表还没有记录。

一般情况下加入一条新记录:

代码语言:javascript
复制
mysql> insert into mytable 
-> values (′aabb′,′cc′,′xxxx-xx-xx′,′dddd′); 
Query OK, 1 row affected (0.05 sec)

再用上面的SELECT命令看看发生了什么变化。我们可以按此方法一条一条地将的记录加入到表中。

再使用如下命令看看是否已将数据输入到数据库表中:

代码语言:javascript
复制
mysql> select * from mytable;  

CSVToMySQL

我们要用Python把CSV文件存入MySQL。

对爬取下来的CSV文件做处理:

代码语言:javascript
复制

csvFile = open('./student.csv', 'w',encoding = 'utf-8')
writer = csv.writer(csvFile)
writer.writerow(('姓名','学号','培养单位','入学年月','录取方式' ,'专业','研究方向','导师','已完成总学分','学位课加权平均分'))
csvRow = []

try:
	for row in rows:
		for cell in row.findAll('td'):
			csvRow.append(cell.get_text().strip())

	writer.writerow(csvRow)


finally:
csvFile.close()

CSV存为MySQL

代码语言:javascript
复制

def saveMysql(self):
       csvFile1 = open('./student.csv', 'r', encoding='utf-8')
       reader = csv.DictReader(csvFile1)

       for e in reader:
       	#连接到数据库
           connection = pymysql.connect(host='127.0.0.1', user='root', password='root', db='test12', charset='utf8',
                                        cursorclass=pymysql.cursors.DictCursor)
           # 执行sql语句
           try:
               with connection.cursor() as cursor:
                   sql = "insert into `student`(`id`,`name`,`academy`,`enrollmentdate`,`major`,`advisor`)values(%s,%s,%s,%s,%s,%s)"
                   # 使用 execute()  方法执行 SQL 查询 
                   cursor.execute(sql, (
                   e['学号'].strip(), e['姓名'].strip(),e['培养单位'].strip(), e['入学年月'].strip(), e['专业'].strip(), e['导师'].strip(), ))

                   connection.commit()
           finally:

               connection.close()

结果:

代码语言:javascript
复制
mysql> select * from student;
+------------+--------+--------------------+----------------+-------------------
----+---------------------------------------+
| id | name   | academy| enrollmentdate | major
| advisor   |
+------------+--------+--------------------+----------------+-------------------
----+---------------------------------------+
| 1601120338 | 肖洒   | 通信工程学院   | 2016-08-30 | 电子与通信工程
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017-02-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • PyMySQL 安装
  • 用MySQL创建数据库和数据库表
    • 1、使用SHOW语句找出在服务器上当前存在什么数据库:SHOW DATABASES;
    • CSVToMySQL
      • CSV存为MySQL
      相关产品与服务
      对象存储
      对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档