## Python第三课 ### 推荐一个python数据结构可视化工具 http://www.pythontutor.com/ ### 课表 - Mysql数据库的基本操作 - 用python操作数据库 - 编写python爬虫并保存到数据库 ### 数据库 我们平时说的数据库,指的是数据库管理系统 ### Mysql数据库 MariaDB:MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品 ### 关系型数据库 另外一种类型的数据库是:非关系型数据库。比较流行的是:Mongodb,redis ```python dict = { 'a' = 100, 'b' = 200 } ``` json格式 数据交换语言 ```python import json with open('K:/Code/jupyter-notebook/Python Study/test.json') as f: # json.load(f) print(f.readlines()) ``` ["{'a' : 100,'b' : 200,'c' : 300}"] ```python #错误 data_1 = "{'a': 1,'b': 2,'c': 3}" #正确,单引号在外 data_2 = '{"a": 1,"b": 2,"b": 3}' j_data = json.loads(data_2) type(j_data) with open('K:/Code/jupyter-notebook/Python Study/test.json', 'r') as f: json.load(f) print(j_data) ``` {'a': 1, 'b': 3} ### MySQL数据库基本操作 ```python # 链接数据库 mysql -u root -p # u 是用户名 p 是需要用密码登录 # 查看数据库 show databases; # 选择数据库 use database_name; # 查看数据库中的table表 show tables; # 查看table表的数据结构 desc tables; # 查看表中的数据 select * from table_name; # 查看数据并限制数量 select * from table_name limit 10; ``` ### 数据库管理工具 sequelpro(mac) 链接: http://www.sequelpro.com/ Navicat(Win) #### 命令行操作数据库 #### 创建数据库 creat database database_name; #### 删除数据库 drop database database_name; #### 指定字符集和校对集,创建数据库 creat database database_name default charset utf8mb4 collate utf8mb4_general_ci; #### 创建表格 create table table_name{ id int(11) unsigned not null default null auto_increment, name varchar(80) not null, primary key('id') }; #### 插入数据 insert into column_name ('id','name') values(1,'value_name'); #### 修改数据 update column_name set name = 'value_name2'; where name = 'value_name1'; #### 删除数据 delete from column where id = 6; #### mysql数据类型: http://www.runoob.com/mysql/mysql-data-types.html ### 使用Python操作数据库 #### python安装第三方库 1、pip : 举例:pip install pymysql 2、conda : 举例:conda install pymysql #### python安装MySQL数据库支持 pip install MySQL-python pip install pymysql ```python import pymysql ``` ```python DATABASE = { 'host': 'localhost', #如果是远程数据库,此处为远程服务器的ip地址 'database': 'db_library', 'user' : 'root', 'password': 'toor', # 字符集编码,防止数据乱码 'charset' : 'utf8' } # db = pymysql.connect(host = 'localhost',user = 'root',password = 'toor',database = 'goods',charset = 'utf8') # 等价于 # db = pymysql.connect('localhost','root','toor','goods',) # 等价于 db = pymysql.connect(**DATABASE) ``` ### 游标 ```python cursor = db.cursor() ``` ### 查询 ```python sql = "SELECT * FROM tb_booktype limit 5" cursor.execute(sql) results = cursor.fetchall() for row in results: print(row) ``` (1, '文学作品', 5, 5.0) (2, '武侠小说', 3, 0.0) (3, '计算机类', 10, 1.0) (4, '微型小说', 6, 1.0) (5, '逻辑推理', 13, 10.0) ### 插入操作 ```python sql = "INSERT INTO tb_booktype(typename) VALUES('英语阅读');" cursor = db.cursor() cursor.execute(sql) db.commit() ``` ### 删除操作 ```python sql = "delete from tb_booktype where typename='英语阅读';" cursor = db.cursor() cursor.execute(sql) db.commit() ``` ### 更新操作 ```python sql = "update tb_booktype set typename='英语文学' where typename='英语阅读';" cursor = db.cursor() cursor.execute(sql) db.commit() ``` ### 捕捉异常 ```python try: do something except Exception as e: print(e) ```