Python数据存储之MySQL(上)
2017-04-17 15:39
441 查看
PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务器的一个库,Python2中则使用mysqldb。
PyMySQL 遵循 Python 数据库 API v2.0 规范,并包含了 pure-Python MySQL 客户端库。
PyMySQL 下载地址:https://github.com/PyMySQL/PyMySQL。
如果还未安装,我们可以使用以下命令安装最新版的 PyMySQL:
强烈建议使用pip,实在是神器。
虽说Python安装第三方库全是看运气,但是自从上手Python3,一直pip从未出错。
之前讲的是讲教务处的数据爬下来存储CSV格式的,现将CSV文件导入MySQL。
本科阶段学过一门数据库的课,SQL,但是早都忘完了。但是概念还是,上手还是很容易的,
2、创建一个数据库abccs: CREATE DATABASE test12;
注意不同操作系统对大小写的敏感。
3、选择你所创建的数据库:USE test12
此时你已经进入你刚才所建立的数据库test12.
4、 创建一个数据库表:CREATE TABLE student ();
首先看现在你的数据库中存在什么表:
说明刚才建立的数据库中还没有数据库表。下面来创建一个数据库表student:
我们要建立一个学生信息的便,表的内容包含学生:学号、姓名、培养单位、入学年月、专业、导师。
由于name等列值是变化的,因此选择VARCHAR,其长度不一定是20。可以选择从1到255的任何长度,如果以后需要改变它的字长,可以使用ALTER TABLE语句。入学日期列则使用DATE数据类型。
创建了一个表后,我们可以看看刚才做的结果,用SHOW TABLES显示数据库中有哪些表:
5、显示表的结构: DESCRIBE mytable;
6、 往表中加入记录
我们先用SELECT命令来查看表中的数据:
mysql> select * from student;
Empty set (0.00 sec)
这说明刚才创建的表还没有记录。
一般情况下加入一条新记录:
再用上面的SELECT命令看看发生了什么变化。我们可以按此方法一条一条地将的记录加入到表中。
再使用如下命令看看是否已将数据输入到数据库表中:
对爬取下来的CSV文件做处理:
结果:
PyMySQL 遵循 Python 数据库 API v2.0 规范,并包含了 pure-Python MySQL 客户端库。
PyMySQL 安装
在使用 PyMySQL 之前,我们需要确保 PyMySQL 已安装。PyMySQL 下载地址:https://github.com/PyMySQL/PyMySQL。
如果还未安装,我们可以使用以下命令安装最新版的 PyMySQL:
pip install PyMySQL
强烈建议使用pip,实在是神器。
虽说Python安装第三方库全是看运气,但是自从上手Python3,一直pip从未出错。
之前讲的是讲教务处的数据爬下来存储CSV格式的,现将CSV文件导入MySQL。
用MySQL创建数据库和数据库表
不会就去学,才是最实用的学习方法。本科阶段学过一门数据库的课,SQL,但是早都忘完了。但是概念还是,上手还是很容易的,
1、使用SHOW语句找出在服务器上当前存在什么数据库:SHOW DATABASES;
mysql> SHOW DATABASES; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | sys| +--------------------+ 4 rows in set (0.03 sec)
2、创建一个数据库abccs: CREATE DATABASE test12;
mysql> CREATE DATABASE test12;
注意不同操作系统对大小写的敏感。
3、选择你所创建的数据库:USE test12
mysql> USE test12 Database changed
此时你已经进入你刚才所建立的数据库test12.
4、 创建一个数据库表:CREATE TABLE student ();
首先看现在你的数据库中存在什么表:
mysql> SHOW TABLES; Empty set (0.00 sec)
说明刚才建立的数据库中还没有数据库表。下面来创建一个数据库表student:
我们要建立一个学生信息的便,表的内容包含学生:学号、姓名、培养单位、入学年月、专业、导师。
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显示数据库中有哪些表:
mysql> SHOW TABLES; +------------------+ | Tables_in_test12 | +------------------+ | student | +------------------+ 1 row in set (0.00 sec)
5、显示表的结构: DESCRIBE mytable;
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)
这说明刚才创建的表还没有记录。
一般情况下加入一条新记录:
mysql> insert into mytable -> values (′aabb′,′cc′,′xxxx-xx-xx′,′dddd′); Query OK, 1 row affected (0.05 sec)
再用上面的SELECT命令看看发生了什么变化。我们可以按此方法一条一条地将的记录加入到表中。
再使用如下命令看看是否已将数据输入到数据库表中:
mysql> select * from mytable;
CSVToMySQL
我们要用Python把CSV文件存入MySQL。对爬取下来的CSV文件做处理:
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
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()
结果:
mysql> select * from student; +------------+--------+--------------------+----------------+------------------- ----+---------------------------------------+ | id | name | academy| enrollmentdate | major | advisor | +------------+--------+--------------------+----------------+------------------- ----+---------------------------------------+ | (学号) | (学生姓名) | (学院) | (入校时间) | (专业) | (老师姓名)
相关文章推荐
- Python爬虫数据存储MySQL【1】连接方式
- python爬取微博图片数据存到Mysql中遇到的各种坑\python Mysql存储图片\python爬取微博图片
- Python爬虫数据存储MySQL【2】模拟登录网页
- python网络爬虫-数据存储之MySQL
- 使用Python3 xlrd pymysql 实现读取Excel数据读取以及mysql存储
- Python数据存储之MySQL(下)
- python爬取数据练习(二)---lxml数据爬取后存储在数据库mysql中
- python--存储数据到MySQL
- 操作 Python爬虫数据存储MySQL【3】爬取信息
- 基于Python Plotly 对 MySQL 存储数据的可视化初步
- python,scrapy爬虫sql之爬取数据存储到mysql的piplelines.py配置
- python爬取微博图片数据存到Mysql中遇到的各种坑\python Mysql存储图片
- Mysql数据备份以及异地存储
- Mysql 中各类型数据的的存储需求
- 修改MySQL默认的数据文件存储目录
- 数据牵移,存储过程的学习(mysql到oracle)
- Python保存数据至MySQL时中文问题
- 利用mysql的存储过程造数据
- Python 关于python的数据存储方面
- mysql存储过程之游标遍历数据表