在請求數據、提取數據後,咱們還須要作什麼呢?答案無疑是:存儲數據。這以前,咱們每一次都將數據保存在文本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