精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Python操作MySQL存儲,這些你都會了嗎?

存儲 存儲軟件
在Python 2中,連接MySQL的庫大多是使用MySQLdb,但是此庫的官方并不支持Python 3,所以這里推薦使用的庫是PyMySQL。

 在Python 2中,連接MySQL的庫大多是使用MySQLdb,但是此庫的官方并不支持Python 3,所以這里推薦使用的庫是PyMySQL。

[[265766]]

本節中,我們就來講解使用PyMySQL操作MySQL數據庫的方法。

1. 準備工作

在開始之前,請確保已經安裝好了MySQL數據庫并保證它能正常運行,而且需要安裝好PyMySQL庫。

2. 連接數據庫

這里,首先嘗試連接一下數據庫。假設當前的MySQL運行在本地,用戶名為root,密碼為123456,運行端口為3306。這里利用PyMySQL先連接MySQL,然后創建一個新的數據庫,名字叫作spiders,代碼如下:

  1. import pymysql 
  2.  
  3. db = pymysql.connect(host='localhost',user='root'password='123456', port=3306) 
  4. cursor = db.cursor() 
  5. cursor.execute('SELECT VERSION()'
  6. data = cursor.fetchone() 
  7. print('Database version:', data) 
  8. cursor.execute("CREATE DATABASE spiders DEFAULT CHARACTER SET utf8"
  9. db.close() 

運行結果如下:

  1. Database version: ('5.6.22',) 

這里通過PyMySQL的connect()方法聲明一個MySQL連接對象db,此時需要傳入MySQL運行的host(即IP)。由于MySQL在本地運行,所以傳入的是localhost。如果MySQL在遠程運行,則傳入其公網IP地址。后續的參數user即用戶名,password即密碼,port即端口(默認為3306)。

連接成功后,需要再調用cursor()方法獲得MySQL的操作游標,利用游標來執行SQL語句。這里我們執行了兩句SQL,直接用execute()方法執行即可。***句SQL用于獲得MySQL的當前版本,然后調用fetchone()方法獲得***條數據,也就得到了版本號。第二句SQL執行創建數據庫的操作,數據庫名叫作spiders,默認編碼為UTF-8。由于該語句不是查詢語句,所以直接執行后就成功創建了數據庫spiders。接著,再利用這個數據庫進行后續的操作。

3. 創建表

一般來說,創建數據庫的操作只需要執行一次就好了。當然,我們也可以手動創建數據庫。以后,我們的操作都在spiders數據庫上執行。

創建數據庫后,在連接時需要額外指定一個參數db。

接下來,新創建一個數據表students,此時執行創建表的SQL語句即可。這里指定3個字段,結構如下所示。

創建該表的示例代碼如下:

  1. import pymysql 
  2.  
  3. db = pymysql.connect(host='localhost'user='root'password='123456', port=3306, db='spiders'
  4. cursor = db.cursor() 
  5. sql = 'CREATE TABLE IF NOT EXISTS students (id VARCHAR(255) NOT NULL, name VARCHAR(255) NOT NULL, age INT NOT NULL, PRIMARY KEY (id))' 
  6. cursor.execute(sql) 
  7. db.close() 

運行之后,我們便創建了一個名為students的數據表。

當然,為了演示,這里只指定了最簡單的幾個字段。實際上,在爬蟲過程中,我們會根據爬取結果設計特定的字段。

4. 插入數據

下一步就是向數據庫中插入數據了。例如,這里爬取了一個學生信息,學號為20120001,名字為Bob,年齡為20,那么如何將該條數據插入數據庫呢?示例代碼如下:

  1. import pymysql 
  2.  
  3. id = '20120001' 
  4. user = 'Bob' 
  5. age = 20 
  6.  
  7. db = pymysql.connect(host='localhost'user='root'password='123456', port=3306, db='spiders'
  8. cursor = db.cursor() 
  9. sql = 'INSERT INTO students(id, name, age) values(%s, %s, %s)' 
  10. try: 
  11.     cursor.execute(sql, (id, user, age)) 
  12.     db.commit() 
  13. except
  14.     db.rollback() 
  15. db.close() 

這里首先構造了一個SQL語句,其Value值沒有用字符串拼接的方式來構造,如:

  1. sql = 'INSERT INTO students(id, name, age) values(' + id + ', ' + name + ', ' + age + ')' 

這樣的寫法煩瑣而且不直觀,所以我們選擇直接用格式化符%s來實現。有幾個Value寫幾個%s,我們只需要在execute()方法的***個參數傳入該SQL語句,Value值用統一的元組傳過來就好了。這樣的寫法既可以避免字符串拼接的麻煩,又可以避免引號沖突的問題。

之后值得注意的是,需要執行db對象的commit()方法才可實現數據插入,這個方法才是真正將語句提交到數據庫執行的方法。對于數據插入、更新、刪除操作,都需要調用該方法才能生效。

接下來,我們加了一層異常處理。如果執行失敗,則調用rollback()執行數據回滾,相當于什么都沒有發生過。

這里涉及事務的問題。事務機制可以確保數據的一致性,也就是這件事要么發生了,要么沒有發生。比如插入一條數據,不會存在插入一半的情況,要么全部插入,要么都不插入,這就是事務的原子性。另外,事務還有3個屬性——一致性、隔離性和持久性。這4個屬性通常稱為ACID特性,具體如下表所示。

  1. try: 
  2.     cursor.execute(sql) 
  3.     db.commit() 
  4. except
  5.     db.rollback() 

這樣便可以保證數據的一致性。這里的commit()和rollback()方法就為事務的實現提供了支持。

上面數據插入的操作是通過構造SQL語句實現的,但是很明顯,這有一個極其不方便的地方,比如突然增加了性別字段gender,此時SQL語句就需要改成:

  1. INSERT INTO students(id, name, age, gender) values(%s, %s, %s, %s) 

相應的元組參數則需要改成:

  1. (id, name, age, gender) 

這顯然不是我們想要的。在很多情況下,我們要達到的效果是插入方法無需改動,做成一個通用方法,只需要傳入一個動態變化的字典就好了。比如,構造這樣一個字典:

  1.     'id''20120001'
  2.     'name''Bob'
  3.     'age': 20 

然后SQL語句會根據字典動態構造,元組也動態構造,這樣才能實現通用的插入方法。所以,這里我們需要改寫一下插入方法:

  1. data = { 
  2.     'id''20120001'
  3.     'name''Bob'
  4.     'age': 20 
  5. table = 'students' 
  6. keys = ', '.join(data.keys()) 
  7. values = ', '.join(['%s'] * len(data)) 
  8. sql = 'INSERT INTO {table}({keys}) VALUES ({values})'.format(table=table, keys=keys, values=values
  9. try: 
  10.    if cursor.execute(sql, tuple(data.values())): 
  11.        print('Successful'
  12.        db.commit() 
  13. except
  14.     print('Failed'
  15.     db.rollback() 
  16. db.close() 

這里我們傳入的數據是字典,并將其定義為data變量。表名也定義成變量table。接下來,就需要構造一個動態的SQL語句了。

首先,需要構造插入的字段id、name和age。這里只需要將data的鍵名拿過來,然后用逗號分隔即可。所以', '.join(data.keys())的結果就是id, name, age,然后需要構造多個%s當作占位符,有幾個字段構造幾個即可。比如,這里有三個字段,就需要構造%s, %s, %s。這里首先定義了長度為1的數組['%s'],然后用乘法將其擴充為['%s', '%s', '%s'],再調用join()方法,最終變成%s, %s, %s。***,我們再利用字符串的format()方法將表名、字段名和占位符構造出來。最終的SQL語句就被動態構造成了:

  1. INSERT INTO students(id, name, age) VALUES (%s, %s, %s) 

***,為execute()方法的***個參數傳入sql變量,第二個參數傳入data的鍵值構造的元組,就可以成功插入數據了。

如此以來,我們便實現了傳入一個字典來插入數據的方法,不需要再去修改SQL語句和插入操作了。

5. 更新數據

數據更新操作實際上也是執行SQL語句,最簡單的方式就是構造一個SQL語句,然后執行:

  1. sql = 'UPDATE students SET age = %s WHERE name = %s' 
  2. try: 
  3.    cursor.execute(sql, (25, 'Bob')) 
  4.    db.commit() 
  5. except
  6.    db.rollback() 
  7. db.close() 

這里同樣用占位符的方式構造SQL,然后執行execute()方法,傳入元組形式的參數,同樣執行commit()方法執行操作。如果要做簡單的數據更新的話,完全可以使用此方法。

但是在實際的數據抓取過程中,大部分情況下需要插入數據,但是我們關心的是會不會出現重復數據,如果出現了,我們希望更新數據而不是重復保存一次。另外,就像前面所說的動態構造SQL的問題,所以這里可以再實現一種去重的方法,如果數據存在,則更新數據;如果數據不存在,則插入數據。另外,這種做法支持靈活的字典傳值。示例如下:

  1. data = { 
  2.     'id''20120001'
  3.     'name''Bob'
  4.     'age': 21 
  5.  
  6. table = 'students' 
  7. keys = ', '.join(data.keys()) 
  8. values = ', '.join(['%s'] * len(data)) 
  9.  
  10. sql = 'INSERT INTO {table}({keys}) VALUES ({values}) ON DUPLICATE KEY UPDATE'.format(table=table, keys=keys, values=values
  11. update = ','.join([" {key} = %s".format(key=keyfor key in data]) 
  12. sql += update 
  13. try: 
  14.     if cursor.execute(sql, tuple(data.values())*2): 
  15.         print('Successful'
  16.         db.commit() 
  17. except
  18.     print('Failed'
  19.     db.rollback() 
  20. db.close() 

這里構造的SQL語句其實是插入語句,但是我們在后面加了ON DUPLICATE KEY UPDATE。這行代碼的意思是如果主鍵已經存在,就執行更新操作。比如,我們傳入的數據id仍然為20120001,但是年齡有所變化,由20變成了21,此時這條數據不會被插入,而是直接更新id為20120001的數據。完整的SQL構造出來是這樣的:

  1. INSERT INTO students(id, name, age) VALUES (%s, %s, %s) ON DUPLICATE KEY UPDATE id = %s, name = %s, age = %s 

這里就變成了6個%s。所以在后面的execute()方法的第二個參數元組就需要乘以2變成原來的2倍。

如此一來,我們就可以實現主鍵不存在便插入數據,存在則更新數據的功能了。

6. 刪除數據

刪除操作相對簡單,直接使用DELETE語句即可,只是需要指定要刪除的目標表名和刪除條件,而且仍然需要使用db的commit()方法才能生效。示例如下:

  1. table = 'students' 
  2. condition = 'age > 20' 
  3.  
  4. sql = 'DELETE FROM  {table} WHERE {condition}'.format(table=table, condition=condition) 
  5. try: 
  6.     cursor.execute(sql) 
  7.     db.commit() 
  8. except
  9.     db.rollback() 
  10.  
  11. db.close() 

因為刪除條件有多種多樣,運算符有大于、小于、等于、LIKE等,條件連接符有AND、OR等,所以不再繼續構造復雜的判斷條件。這里直接將條件當作字符串來傳遞,以實現刪除操作。

7. 查詢數據

說完插入、修改和刪除等操作,還剩下非常重要的一個操作,那就是查詢。查詢會用到SELECT語句,示例如下:

  1. sql = 'SELECT * FROM students WHERE age >= 20' 
  2.  
  3. try: 
  4.     cursor.execute(sql) 
  5.     print('Count:'cursor.rowcount) 
  6.     one = cursor.fetchone() 
  7.     print('One:', one) 
  8.     results = cursor.fetchall() 
  9.     print('Results:', results) 
  10.     print('Results Type:', type(results)) 
  11.     for row in results: 
  12.         print(row) 
  13. except
  14.     print('Error'

運行結果如下:

  1. Count: 4 
  2. One: ('20120001''Bob', 25) 
  3. Results: (('20120011''Mary', 21), ('20120012''Mike', 20), ('20120013''James', 22)) 
  4. Results Type: <class 'tuple'
  5. ('20120011''Mary', 21) 
  6. ('20120012''Mike', 20) 
  7. ('20120013''James', 22) 

這里我們構造了一條SQL語句,將年齡20歲及以上的學生查詢出來,然后將其傳給execute()方法。注意,這里不再需要db的commit()方法。接著,調用cursor的rowcount屬性獲取查詢結果的條數,當前示例中是4條。

然后我們調用了fetchone()方法,這個方法可以獲取結果的***條數據,返回結果是元組形式,元組的元素順序跟字段一一對應,即***個元素就是***個字段id,第二個元素就是第二個字段name,以此類推。隨后,我們又調用了fetchall()方法,它可以得到結果的所有數據。然后將其結果和類型打印出來,它是二重元組,每個元素都是一條記錄,我們將其遍歷輸出出來。

但是這里需要注意一個問題,這里顯示的是3條數據而不是4條,fetchall()方法不是獲取所有數據嗎?這是因為它的內部實現有一個偏移指針用來指向查詢結果,最開始偏移指針指向***條數據,取一次之后,指針偏移到下一條數據,這樣再取的話,就會取到下一條數據了。我們最初調用了一次fetchone()方法,這樣結果的偏移指針就指向下一條數據,fetchall()方法返回的是偏移指針指向的數據一直到結束的所有數據,所以該方法獲取的結果就只剩3個了。

此外,我們還可以用while循環加fetchone()方法來獲取所有數據,而不是用fetchall()全部一起獲取出來。fetchall()會將結果以元組形式全部返回,如果數據量很大,那么占用的開銷會非常高。因此,推薦使用如下方法來逐條取數據:

  1. sql = 'SELECT * FROM students WHERE age >= 20' 
  2. try: 
  3.     cursor.execute(sql) 
  4.     print('Count:'cursor.rowcount) 
  5.     row = cursor.fetchone() 
  6.     while row: 
  7.         print('Row:', row) 
  8.         row = cursor.fetchone() 
  9. except
  10.     print('Error'

這樣每循環一次,指針就會偏移一條數據,隨用隨取,簡單高效。

本節中,我們介紹了如何使用PyMySQL操作MySQL數據庫以及一些SQL語句的構造方法。

責任編輯:武曉燕 來源: 今日頭條
相關推薦

2018-04-26 16:35:44

PythonMySQL存儲

2021-12-14 18:20:23

Github技巧前端

2023-11-27 11:42:46

DjangoPython

2023-12-24 22:30:05

LambdaJava函數

2024-07-04 09:39:40

Go語言MongoDB

2023-03-26 22:31:29

2022-12-06 07:53:33

MySQL索引B+樹

2023-05-05 06:54:07

MySQL數據查詢

2024-08-19 10:24:14

2022-12-08 10:49:43

2024-10-18 10:35:10

2023-11-01 07:28:31

MySQL日志維護

2024-01-19 08:25:38

死鎖Java通信

2023-07-26 13:11:21

ChatGPT平臺工具

2022-04-01 08:23:17

InputstreString字符串

2023-01-10 08:43:15

定義DDD架構

2024-02-04 00:00:00

Effect數據組件

2021-12-01 07:19:44

C# Npoi Excel

2024-02-27 08:39:19

RustJSON字符串

2022-11-02 10:21:41

K8s pod運維
點贊
收藏

51CTO技術棧公眾號

国产精品久久久久久免费观看| 亚洲第一精品福利| 五码日韩精品一区二区三区视频| 国产一级在线免费观看| 亚洲成人黄色| 香蕉影视欧美成人| 欧美不卡三区| 国产乱码久久久久久| 亚洲欧美日本国产| 香蕉成人伊视频在线观看| 日本一区免费| 亚洲国产精品久久久久久6q| 久久久久国产精品一区二区 | 51精品在线观看| 18精品爽国产三级网站| 2020国产精品极品色在线观看| 岛国精品视频在线播放| 伊人久久大香线蕉成人综合网| 亚洲国产av一区二区| 日本不卡一二三区黄网| 欧美激情影音先锋| 久久久久久久久福利| 盗摄牛牛av影视一区二区| 91久久香蕉国产日韩欧美9色| 天天综合五月天| 国产精品影院在线| 成人综合在线视频| 国产视频福利一区| 免费日韩一级片| 亚洲中无吗在线| 亚洲人成电影在线| 在线看黄色的网站| 激情五月综合婷婷| 欧美三级韩国三级日本一级| 青青青免费在线| 中文字幕免费高清电视剧网站在线观看| 久久久久青草大香线综合精品| 97久久夜色精品国产九色| 国产成人av免费| 丝袜亚洲精品中文字幕一区| 久久这里有精品视频| 亚洲精品视频网址| 欧美精美视频| 日韩电影大片中文字幕| 久久国产免费视频| 精品视频在线观看免费观看| 欧美日韩一区在线| 99视频在线免费| 夜鲁夜鲁夜鲁视频在线播放| 午夜激情一区二区三区| 777久久精品一区二区三区无码 | 国内精品小视频| 国产波霸爆乳一区二区| 亚洲最新色图| 欧美床上激情在线观看| 免费在线观看黄色小视频| 成人羞羞动漫| 最近2019中文字幕第三页视频 | 亚洲污视频在线观看| 婷婷午夜社区一区| 91国产视频在线观看| 国模杨依粉嫩蝴蝶150p| 一区二区三区短视频| 欧美香蕉大胸在线视频观看| 国产最新免费视频| 天堂√中文最新版在线| 色综合一个色综合亚洲| 韩国一区二区av| 中文字幕系列一区| 欧美视频一区二区在线观看| 无限资源日本好片| 在线日韩三级| 欧美一级夜夜爽| 日韩大尺度视频| 欧美美女在线直播| 亚洲人成77777在线观看网| 日韩免费成人av| 久久久人成影片免费观看| 欧美成人精品一区二区| 久久黄色免费网站| 国产日韩欧美一区| 国产精品99一区| 国产精品免费无遮挡| 国产成人8x视频一区二区| 国产久一道中文一区| 日本一区高清| 国产精品二三区| 欧美久久久久久久久久久久久久| 91黄页在线观看| 一本色道久久综合狠狠躁的推荐| www.日本一区| 91大神精品| 亚洲天堂色网站| 免费成年人视频在线观看| 亚洲视频免费| 国产精品精品视频| 精品国产99久久久久久宅男i| 成人精品国产免费网站| 日本一区二区三区四区在线观看| 在线观看免费黄视频| 亚洲一区二区不卡免费| 精品久久久久久久无码| 秋霞一区二区| 亚洲一区www| 久久中文字幕在线观看| 日韩影院精彩在线| 99国产视频在线| 九色视频网站在线观看| 亚洲精品国产a| 欧美激情精品久久久久久小说| 国产精品**亚洲精品| 亚洲精品在线看| 久草免费在线观看视频| 日韩国产在线观看| 国产精品亚洲综合| 麻豆电影在线播放| 在线观看免费成人| 毛茸茸free性熟hd| 在线看片不卡| 国产精品一区二区三区久久| 亚洲 欧美 激情 另类| 最新高清无码专区| 国产无套粉嫩白浆内谢的出处| av不卡一区| 久久视频精品在线| 国产成人a v| 26uuu亚洲| 国产一区二区视频播放| 精品精品视频| 日韩在线观看免费高清完整版| 成年人视频在线免费看| 国产精品一区二区果冻传媒| 亚洲精品欧洲精品| 美女18一级毛片一品久道久久综合| 日韩女优毛片在线| 免费看一级黄色| 日韩国产欧美在线播放| 精品一卡二卡三卡四卡日本乱码 | 91久久电影| 国产精品黄色av| 男同在线观看| 日韩欧美在线一区| 狠狠人妻久久久久久综合蜜桃| 激情欧美丁香| 国产伦精品一区二区三区在线| 亚洲h片在线看| 日韩欧美久久一区| 夫妻性生活毛片| 极品少妇一区二区| 91麻豆天美传媒在线| 国产精品一区二区精品| 久久久久99精品久久久久| 在线观看黄色网| 中文字幕一区在线观看视频| 亚洲一区精品视频在线观看| 日韩欧美精品一区| 国产视频观看一区| а√天堂在线官网| 日韩欧美国产一二三区| 久久久精品一区二区涩爱| 国产精品一区二区视频| 嫩草影院中文字幕| 加勒比中文字幕精品| 97超级碰在线看视频免费在线看| 四虎影视在线观看2413| 日韩欧美一区二区三区| 少妇无套高潮一二三区| 全部av―极品视觉盛宴亚洲| 在线视频精品一区| 美国十次综合久久| 久久久久免费精品国产| 四虎成人免费在线| 欧美中文字幕一区二区三区| 黑人操日本美女| 国产成人久久精品77777最新版本| 久久人人爽人人爽人人av| 欧美日韩导航| 国产美女久久久| 中文在线手机av| 亚洲男人天堂视频| 一级二级三级视频| 亚洲图片一区二区| 人妻av无码一区二区三区 | 欧美日韩一区二区区| 激情综合中文娱乐网| 久久免费一区| 四虎精品在线观看| 国语自产偷拍精品视频偷 | 久久影院中文字幕| 天天干天天舔天天射| 欧美性高清videossexo| 天天看片中文字幕| 91麻豆国产精品久久| 中日韩av在线播放| 99精品国产在热久久婷婷| 翔田千里亚洲一二三区| 999久久精品| 国产精品免费观看在线| 色呦呦在线观看视频| 精品亚洲aⅴ在线观看| 国产精品久久久久毛片| 偷拍与自拍一区| 成年人二级毛片| 久久影院视频免费| 亚洲欧美激情一区二区三区| 老司机免费视频久久| 激情小视频网站| 日韩精品看片| 精品在线视频一区二区| 9999精品| 国产精品私拍pans大尺度在线| 成人性生交大片免费看在线播放| 永久免费毛片在线播放不卡 | 欧美少妇激情| 91国偷自产一区二区三区的观看方式 | 欧美亚洲综合久久| 国产人妻大战黑人20p| 国产毛片精品视频| 久久精品青青大伊人av| 亚洲欧美日韩免费| 91精品国产综合久久精品| 日本韩国欧美中文字幕| 亚洲精品成人悠悠色影视| 欧美激情 一区| 99热这里都是精品| 韩国三级丰满少妇高潮| 奇米一区二区三区| jizzjizzxxxx| 在线观看视频日韩| 玖玖精品在线视频| 欧美电影免费播放| 日韩电影天堂视频一区二区| 黄色成人美女网站| 91九色偷拍| 国产精品毛片无码| 国产日韩精品在线观看| 在线成人av观看| 69久久夜色精品国产69| 国产福利在线播放麻豆| 一区二区国产精品视频| 欧美日韩在线精品一区二区三区激情综| 精品sm在线观看| 亚洲风情第一页| 精品国产99国产精品| 精品国产伦一区二区三区| 91精品国产综合久久香蕉的特点 | 日本高清视频在线播放| 亚洲香蕉伊综合在人在线视看| 色天堂在线视频| 亚洲精品视频在线观看视频| 日本中文字幕电影在线观看 | 日本一道本视频| 久久精品在线观看| 一区二区三区伦理片| 久久精品无码一区二区三区| 日本二区在线观看| 日本一区二区三区久久久久久久久不 | 国产模特av私拍大尺度| 91精品久久久久久蜜臀| 国产a级免费视频| 精品成人免费观看| 午夜影院在线视频| 亚洲一区二区黄| 免费av毛片在线看| 欧美美女操人视频| 91www在线| 国产97在线|日韩| 欧美一区=区三区| dy888夜精品国产专区| 加勒比视频一区| 日本一区二区三区免费观看| 国产精品国产一区| 99热久久这里只有精品| 久久精品导航| 中文字幕久久av| 成人午夜又粗又硬又大| 丝袜美腿中文字幕| 国产精品高清亚洲| 国产一级在线视频| 91九色02白丝porn| 国产草草影院ccyycom| 亚洲精品白浆高清久久久久久| 国产在线播放av| 另类视频在线观看| 美女高潮视频在线看| 国产精品免费视频久久久| 免费欧美网站| 欧美专区一二三| 中文无码久久精品| 免费观看日韩毛片| 久久99国产精品成人| 国产精品久久久久久亚洲色| 中文字幕精品—区二区四季| 欧美日韩大片在线观看| 日韩欧美精品中文字幕| 99久久亚洲精品日本无码| 日韩精品极品在线观看| 黄色小网站在线观看| 97视频在线观看视频免费视频 | 视频一区视频二区在线观看| www.亚洲自拍| 国产亚洲欧洲997久久综合| 欧美特级一级片| 色拍拍在线精品视频8848| 精品人妻一区二区三区日产乱码| 亚洲视频在线观看| 国产99re66在线视频| 国产精品日日摸夜夜添夜夜av| 激情av综合| 国产91av视频在线观看| 国产人成精品一区二区三| 日本r级电影在线观看| 久久精品日产第一区二区三区高清版 | 日中文字幕在线| 欧美大荫蒂xxx| 91成人在线| 欧美激情导航| 伊人久久亚洲影院| xxx中文字幕| 国产精品护士白丝一区av| 亚洲天堂一区在线| 欧美精品一区二区三| 综合图区亚洲| 成人久久一区二区三区| av在线不卡顿| 国产视频一区二区三区在线播放| 成人黄色av电影| 九九在线观看视频| 91精品国产高清一区二区三区蜜臀| 成人精品一区二区三区校园激情| 97在线观看视频| 好吊妞视频这里有精品| 伊人网在线免费| 国产一区二区三区免费看| 日韩不卡av在线| 色综合久久66| 每日更新av在线播放| 2020国产精品视频| 欧美偷窥清纯综合图区| 六月婷婷在线视频| 懂色av噜噜一区二区三区av| 精品自拍偷拍视频| 欧美一区二区三区男人的天堂| 99riav在线| 成人美女av在线直播| 久久麻豆精品| 天堂av8在线| 亚洲精品写真福利| www.色播.com| 97国产精品人人爽人人做| 国产精品xxx在线观看| 97超碰国产精品| 9久草视频在线视频精品| 国产无码精品一区二区| 亚洲国产另类久久精品| 蜜桃视频www网站在线观看| 久久久久久国产精品mv| 六月婷婷一区| 亚洲精品国产精品国自产网站| 在线免费观看成人短视频| 国产免费av高清在线| 国产精品丝袜高跟| 亚洲成av人片一区二区密柚| 日本泡妞xxxx免费视频软件| 亚洲在线一区二区三区| 神宫寺奈绪一区二区三区| 欧美性在线视频| 欧美日韩国产高清电影| www.com污| 五月婷婷欧美视频| 九一在线视频| 亚洲一区二区三区四区视频| 国产综合婷婷| 麻豆精品免费视频| 在线不卡欧美精品一区二区三区| 午夜羞羞小视频在线观看| 国外成人在线视频网站| 免费看亚洲片| 欧美另类videoxo高潮| 亚洲国内高清视频| 免费污视频在线一区| 99视频精品全部免费看| 91丨porny丨蝌蚪视频| 伊人色综合久久久| 久久久噜久噜久久综合| 国产欧美日韩精品一区二区免费| 九一精品久久久| 午夜精品一区二区三区电影天堂 | 三级小说欧洲区亚洲区| 性欧美极品xxxx欧美一区二区| 最近日韩中文字幕| 性xxxx视频播放免费| 国产精品网红福利| 伊人久久综合| 男女全黄做爰文章| 亚洲第一偷拍网| 欧美美女福利视频| 国产一区二区三区精彩视频| 亚洲色图都市小说| 免费国产在线观看|