在请求数据、提取数据后,咱们还须要作什么呢?答案无疑是:存储数据。这以前,咱们每一次都将数据保存在文本txt格式中,这没什么不能够的。但并不存在“各样问题最优解指向同一答案”。咱们须要多掌握——至少也得是了解——主流存储数据的方法。
会以MySQL,MongDB,Redis顺序,以及其余这样的顺序一一介绍。然而咱们并不是担任“数据管理员”一职,因此介绍内容可能相对“简陋”,但我想够用就好,必要时动动手指找度娘!(并不是我不用谷歌,是不想把大家“基佬”化)mysql
MySQL的一种规范。说到它,咱们应该立马在脑海里反应出“关系型数据”。
1. 第一范式:列不能够拆分
2. 第二范式:惟一标识(经过属性找到惟一对象)
3. 第三范式:引用主键(引用关系的时候只能引用主键)
每个范式都创建在前一个范式的基础之上git
(一样,我仍不爱讲如何安装,由于安装环境才是最难环节有木有啊)
1. 启动数据库:win环境net start mysql
;ubuntu环境service mysql start
2. 关闭数据库:win环境net stop mysql
;ubuntu环境service mysql stop
3. 登录数据库:mysql -u 用户 -p
;远程登录数据库:mysql -h ip地址 -u 用户 -p
(远程链接须要设置,后面会讲)github
首次安装mysql后须要root帐户登录,密码为空,通常状况下,咱们须要为root设置一下密码
1. alter user "root"@"localhost" identified by "newPassword";
2. 另外一种修改密码方式:
set password for "username"@"localhost"=password("newPassword");
若是修改的是当前用户密码也能够:set password=password("newpassword");
==上面的localhost并不是固定,须要看实际状况,但通常默认为localhost。查看方式:==
use mysql;
使用名为mysql的数据库
select Host,User from user;
显示user表中的Host,User字段
3. 通常不会直接root帐户对数据库操做,因此建立普通用户:
create user "username"@"localhost" identified by "password"
(localhost的意思是本地,若是须要远程访问,能够改成:%)
4. 为用户受权:
grant all on *.* to "username"@"loaclhost"
(所有权限)
grant all privileges on databasename.tablename to "username"@"localhost"
(仅增删查改的权限,指定某个数据库的某个表)
5. 撤销权限:
revoke all privileges on databaseName.tableName from "user"@"localhost"
==撤销命令必定要对应受权语句,即:权限部分,针对数据必须同样,否则不起做用==
6. 查看受权语句:show grants for "username"@"%";
7. 删除用户:drop user "test"@"localhost";
sql
quit;
或者exit;
select now();
select version()
create database 数据库名 charset=utf8;
drop database 数据库名;
use 数据库名;
select databse();
show databases;
create table 表名(id int auto_increment primary key not null,sname varchar(10) not null);
表示建立一个表,有id字段,自增加型,主键,不为空;sname字段,varchar类型,限长10,不为空(不写not null默承认为空,且不能建立空表)alter table 表名 add 列名 数据类型;
alter table 表名 change 旧列 新列 数据类型
alter table 表名 modify 列名 数据类型;
rename table 表名(旧) to 表名(新);
show create table 表名;
desc 表名;
drop table 表名;
insert into 表名 values(值1,值2...);
insert into 表名(列1,列2...) values(值1,值2);
insert into 表名 values(...),(...)...;
insert into 表名(...) values(...),(...)...;
delete from where 条件;
isdelete
数据类型为bit,默认值0,若是删除对其赋值1 alter table 表名 add isdelete bit default 0;
select * from 表名 where 条件;
select * from 表名 where 列名 like "黄%";
select * from 表名 where 列名 like "黄_";
... where id in (1, 3, 5);
id值为1,3, 5 ...where id between 1 and 4;
id值在1~4间,包括1,4 ... where id is null;
id值为0 select isdelete+0 from...
十进制显示 select bin(isdelete+0) from...
二进制显示 select oct(isdelete+0) from...
八进制显示 select hex(isdelete+0) from...
十六进制显示 ...where 条件A and 条件B ...;
update 表名 set 列1=值1,... where 条件;
show create table students;
alter table students engine=innodb;
begin
开始 commit
提交 rollback
回滚import pymysql
conn = pymysql.connect(host="",port=3306, user="", password="",db="");
conn.commit()
提交;rollback()
回滚cursor = connect.cursor();
cursor.execute(sql)
执行sql语句 cursor.fetchall()
若是执行的是查询语句,fetchall()负责返回查询到的所有结果,返回元组类型 cursor.close()
conn.close()
目标歌曲《体面》,热门评论4000条
虽然QQ音乐号称四千条,实际抓取下来只有3600+,我随机查看了一些接口,发现的确不可能四千条
chrome
关注点:
1. 注意数据来源,此次不是获取静态网页,而是经过chrome浏览器开发者工具找到热评的API接口
2. 数据库插入遇到表情符,修改编码格式为utf8md4
若是windows环境能够如下操做
a. 在mysql的安装目录下找到my.ini,作以下修改:
[mysqld]
character-set-server=utf8mb4
[mysql]
default-character-set=utf8mb4
修改后重启mySQL:net stop mysql ; net start mysql
b.将已经建立好的表也转换成utf8mb4
alter table 表名 convert to character set utf8mb4 collate utf8mb4_bin;
3. 数据库插入双引号报错问题
利用replace()替换,将全部英文双引号转义(\"
)数据库
完整代码已上传GitHub,点击可查看。ubuntu