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

如何使用Python將MySQL表數據遷移到MongoDB集合

譯文
云計算 MongoDB
本文詳細的講解了如何在需要的地方獲取MySQL 數據。

[[410477]]

【51CTO.com快譯】介紹

MySQL 是一個 RDBMS 平臺,它以規范化的方式以表格格式存儲數據,而 MongoDB 是一個 NoSQL 數據庫,它以無模式的方式將信息存儲為按集合分組的文檔。數據的表示方式完全不同,因此將 MySQL 表數據遷移到 MongoDB 集合聽起來可能是一項艱巨的任務。但是,Python 憑借其強大的連接性和數據處理能力讓這一切變得輕而易舉。

在本文中,將詳細的講解如何使用簡單的 Python 腳本將 MySQL 表數據遷移到 MongoDB 集合所需的步驟。這些腳本是在 Windows 上使用 Python 3.9.5 開發的。但是,它應該適用于任何平臺上的任何 Python 3+ 版本一起使用。

步驟 1:安裝所需的模塊

第一步是安裝連接MySQL 和 MongoDB 數據庫實例所需的模塊。我們將使用mysql.connector連接到 MySQL 數據庫。對于 MongoDB,使用pymongo,這是從 Python 連接到 MongoDB 的推薦模塊。

如果所需模塊尚未安裝,請運行以下PIP命令來安裝它們。

  1. pip 安裝 mysql 連接器 pip 安裝 pymongo 

PIP 是 Python 包或模塊的包管理器。

步驟2:從MySQL表中讀取數據

第一步是從源 MySQL 表中讀取數據,并以可用于將數據加載到目標 MongoDB 數據庫中的格式進行準備。MongoDB 是一個 NoSQL 數據庫,它將數據存儲為 JSON 文檔,因此最好以 JSON 格式生成源數據。值得一提的是,Python 具有強大的數據處理能力,可以輕松地將數據轉換為 JSON 格式。

  1. import mysql.connector  
  2. mysqldb = mysql.connector.connect(    host="localhost",    database="employees",    user="root",    password="" ) 
  3. mycursor = mysqldb.cursor(dictionary=True) mycursor.execute("SELECT * from categories;") myresult = mycursor.fetchall()  
  4. print(myresult) 

當腳本在沒有任何錯誤的情況下完成時,輸出的結果如下:

  1.    { 
  2.       "id":4
  3.       "name":"Medicine"
  4.       "description":"<p>Medicine<br></p>"
  5.       "created_at":""
  6.       "updated_at":"" 
  7.    }, 
  8.    { 
  9.       "id":6
  10.       "name":"Food"
  11.       "description":"<p>Food</p>"
  12.       "created_at":""
  13.       "updated_at":"" 
  14.    }, 
  15.    { 
  16.       "id":8
  17.       "name":"Groceries"
  18.       "description":"<p>Groceries<br></p>"
  19.       "created_at":""
  20.       "updated_at":"" 
  21.    }, 
  22.    { 
  23.       "id":9
  24.       "name":"Cakes & Bakes"
  25.       "description":"<p>Cakes & Bakes<br></p>"
  26.       "created_at":d""
  27.       "updated_at":"" 
  28.    } 

請注意,輸出的是一個 JSON 數組,因為我們將dictionary=True參數傳遞給了游標。否則,結果將采用列表格式。現在有了 JSON 格式的源數據,就可以遷移到 MongoDB 集合。

步驟3:寫入 MongoDB 集合

獲得 JSON 格式的源數據后,下一步是將數據插入到 MongoDB 集合中。集合是一組文檔,相當于 RDBMS 中表(或關系)。我可以通過調用insert_many()集合類的方法來實現,該方法返回插入文檔的對象 ID 列表。請注意,當作為參數傳遞空列表時,此方法將引發異常,因此在方法調用之前進行長度檢查。

  1. import pymongo 
  2.  
  3. mongodb_host = "mongodb://localhost:27017/" 
  4. mongodb_dbname = "mymongodb" 
  5.  
  6. myclient = pymongo.MongoClient(mongodb_host) 
  7. mydb = myclient[mongodb_dbname] 
  8. mycol = mydb["categories"
  9.  
  10. if len(myresult) > 0
  11.         x = mycol.insert_many(myresult) #myresult comes from mysql cursor 
  12.         print(len(x.inserted_ids)) 

完成此步驟后,檢查一下 MongoDB 實例,以驗證數據庫和集合是否已創建,文檔是否已插入。注意MongoDB 是無模式的,這就意味著不必定義模式來插入文檔,模式是動態推斷并自動創建的。MongoDB 還可以創建代碼中引用的數據庫和集合(如果它們還不存在的話)。

步驟4:把數據放在一起

下面是從 MySQL 中讀取表并將其插入到 MongoDB 中集合的完整腳本。

  1. import mysql.connector 
  2. import pymongo 
  3.  
  4. delete_existing_documents = True 
  5. mysql_host="localhost" 
  6. mysql_database="mydatabase" 
  7. mysql_schema = "myschema" 
  8. mysql_user="myuser" 
  9. mysql_password="********" 
  10.  
  11. mongodb_host = "mongodb://localhost:27017/" 
  12. mongodb_dbname = "mymongodb" 
  13.  
  14. mysqldb = mysql.connector.connect( 
  15.     host=mysql_host, 
  16.     database=mysql_database, 
  17.     user=mysql_user, 
  18.     password=mysql_password 
  19.  
  20. mycursor = mysqldb.cursor(dictionary=True
  21. mycursor.execute("SELECT * from categories;"
  22. myresult = mycursor.fetchall() 
  23.  
  24. myclient = pymongo.MongoClient(mongodb_host) 
  25. mydb = myclient[mongodb_dbname] 
  26. mycol = mydb["categories"
  27.  
  28. if len(myresult) > 0
  29.         x = mycol.insert_many(myresult) #myresult comes from mysql cursor 
  30.         print(len(x.inserted_ids)) 

步驟 5:增強腳本以加載 MySQL 架構中的所有表

該腳本從 MySQL 中讀取一個表,并將結果加載到 MongoDB 集合中。然后,下一步是遍歷源數據庫中所有表的列表,并將結果加載到新的 MySQL 集合中。我們可以通過查詢information_schema.tables元數據表來實現這一點,該表提供給定模式中的表列表。然后可以遍歷結果并調用上面的腳本來遷移每個表的數據。

  1. #Iterate through the list of tables in the schema 
  2. table_list_cursor = mysqldb.cursor() 
  3. table_list_cursor.execute("SELECT table_name FROM information_schema.tables WHERE table_schema = %s ORDER BY table_name;", (mysql_schema,)) 
  4. tables = table_list_cursor.fetchall() 
  5.  
  6. for table in tables: 
  7.     #Execute the migration script for 'table' 

也可以通過將遷移邏輯抽象為一個函數來實現這一點。

  1. #Function migrate_table  
  2. def migrate_table(db, col_name): 
  3.     mycursor = db.cursor(dictionary=True
  4.     mycursor.execute("SELECT * FROM " + col_name + ";"
  5.     myresult = mycursor.fetchall() 
  6.  
  7.     mycol = mydb[col_name] 
  8.      
  9.     if delete_existing_documents: 
  10.         #delete all documents in the collection 
  11.         mycol.delete_many({}) 
  12.  
  13.     #insert the documents 
  14.     if len(myresult) > 0
  15.         x = mycol.insert_many(myresult) 
  16.         return len(x.inserted_ids) 
  17.     else
  18.         return 0 

步驟6:輸出腳本進度并使其可讀

腳本的進度是通過使用print 語句來傳達的。通過顏色編碼使輸出易于閱讀。例如,以將成功語句打印為綠色,將失敗語句打印為紅色。

  1. class bcolors: 
  2.     HEADER = '\033[95m' 
  3.     OKBLUE = '\033[94m' 
  4.     OKCYAN = '\033[96m' 
  5.     OKGREEN = '\033[92m' 
  6.     WARNING = '\033[93m' 
  7.     FAIL = '\033[91m' 
  8.     ENDC = '\033[0m' 
  9.     BOLD = '\033[1m' 
  10.     UNDERLINE = '\033[4m' 
  11.  
  12. print(f"{bcolors.HEADER}This is a header{bcolors.ENDC}"
  13. print(f"{bcolors.OKBLUE}This prints in blue{bcolors.ENDC}"
  14. print(f"{bcolors.OKGREEN}This message is green{bcolors.ENDC}"

最終結果

  • 源 MySQL 數據庫
  • 遷移后的目標 MongoDB 數據庫
  • 在VSCode 中的 Python 腳本和輸出

完整的腳本

  1. import mysql.connector 
  2. import pymongo 
  3. import datetime 
  4.  
  5. class bcolors: 
  6.     HEADER = '\033[95m' 
  7.     OKBLUE = '\033[94m' 
  8.     OKCYAN = '\033[96m' 
  9.     OKGREEN = '\033[92m' 
  10.     WARNING = '\033[93m' 
  11.     FAIL = '\033[91m' 
  12.     ENDC = '\033[0m' 
  13.     BOLD = '\033[1m' 
  14.     UNDERLINE = '\033[4m' 
  15.  
  16. begin_time = datetime.datetime.now() 
  17. print(f"{bcolors.HEADER}Script started at: {begin_time} {bcolors.ENDC}"
  18.  
  19. delete_existing_documents = True
  20. mysql_host="localhost" 
  21. mysql_database="mydatabase" 
  22. mysql_schema = "myschhema" 
  23. mysql_user="root" 
  24. mysql_password="" 
  25.  
  26. mongodb_host = "mongodb://localhost:27017/" 
  27. mongodb_dbname = "mymongodb" 
  28.  
  29. print(f"{bcolors.HEADER}Initializing database connections...{bcolors.ENDC}"
  30. print("") 
  31.  
  32. #MySQL connection 
  33. print(f"{bcolors.HEADER}Connecting to MySQL server...{bcolors.ENDC}"
  34. mysqldb = mysql.connector.connect( 
  35.     host=mysql_host, 
  36.     database=mysql_database, 
  37.     user=mysql_user, 
  38.     password=mysql_password 
  39. print(f"{bcolors.HEADER}Connection to MySQL Server succeeded.{bcolors.ENDC}"
  40.  
  41. #MongoDB connection 
  42. print(f"{bcolors.HEADER}Connecting to MongoDB server...{bcolors.ENDC}"
  43. myclient = pymongo.MongoClient(mongodb_host) 
  44. mydb = myclient[mongodb_dbname] 
  45. print(f"{bcolors.HEADER}Connection to MongoDB Server succeeded.{bcolors.ENDC}"
  46.  
  47. print(f"{bcolors.HEADER}Database connections initialized successfully.{bcolors.ENDC}"
  48.  
  49. #Start migration 
  50. print(f"{bcolors.HEADER}Migration started...{bcolors.ENDC}"
  51. dblist = myclient.list_database_names() 
  52. if mongodb_dbname in dblist: 
  53.     print(f"{bcolors.OKBLUE}The database exists.{bcolors.ENDC}"
  54. else
  55.     print(f"{bcolors.WARNING}The database does not exist, it is being created.{bcolors.ENDC}"
  56.  
  57. #Function migrate_table  
  58. def migrate_table(db, col_name): 
  59.     mycursor = db.cursor(dictionary=True
  60.     mycursor.execute("SELECT * FROM " + col_name + ";"
  61.     myresult = mycursor.fetchall() 
  62.  
  63.     mycol = mydb[col_name] 
  64.      
  65.     if delete_existing_documents: 
  66.         #delete all documents in the collection 
  67.         mycol.delete_many({}) 
  68.  
  69.     #insert the documents 
  70.     if len(myresult) > 0
  71.         x = mycol.insert_many(myresult) 
  72.         return len(x.inserted_ids) 
  73.     else
  74.         return 0 
  75.  
  76. #Iterate through the list of tables in the schema 
  77. table_list_cursor = mysqldb.cursor() 
  78. table_list_cursor.execute("SELECT table_name FROM information_schema.tables WHERE table_schema = %s ORDER BY table_name LIMIT 15;", (mysql_schema,)) 
  79. tables = table_list_cursor.fetchall() 
  80.  
  81. total_count = len(tables) 
  82. success_count = 0 
  83. fail_count = 0 
  84.  
  85. for table in tables: 
  86.     try
  87.         print(f"{bcolors.OKCYAN}Processing table: {table[0]}...{bcolors.ENDC}"
  88.         inserted_count = migrate_table(mysqldb, table[0]) 
  89.         print(f"{bcolors.OKGREEN}Processing table: {table[0]} completed. {inserted_count} documents inserted.{bcolors.ENDC}"
  90.         success_count += 1 
  91.     except Exception as e: 
  92.         print(f"{bcolors.FAIL} {e} {bcolors.ENDC}"
  93.         fail_count += 1 
  94.          
  95. print("") 
  96. print("Migration completed."
  97. print(f"{bcolors.OKGREEN}{success_count} of {total_count} tables migrated successfully.{bcolors.ENDC}"
  98. if fail_count > 0
  99.     print(f"{bcolors.FAIL}Migration of {fail_count} tables failed. See errors above.{bcolors.ENDC}"
  100.  
  101. end_time = datetime.datetime.now() 
  102. print(f"{bcolors.HEADER}Script completed at: {end_time} {bcolors.ENDC}"
  103. print(f"{bcolors.HEADER}Total execution time: {end_time-begin_time} {bcolors.ENDC}"

警告

該腳本適用于中小型 MySQL 數據庫,它有幾百個表,每個表有幾千行。對于具有數百萬行的大型數據庫,性能可能會受到影響。在開始實際遷移之前,請在表列表查詢和實際表select查詢上使用 LIMIT 關鍵字對有限行進行檢測。

下載 

帶點擊此處從 GitHub 下載整個腳本:
https://github.com/zshameel/MySQL2MongoDB

【51CTO譯稿,合作站點轉載請注明原文譯者和出處為51CTO.com】

責任編輯:梁菲 來源: DZone
相關推薦

2017-10-20 08:45:15

數據庫MongoDBMySQL

2016-12-12 19:16:43

數據云端

2021-01-28 09:00:00

SQL數據庫NoSQL

2022-08-29 14:14:22

云計算云遷移數據分析

2016-11-11 00:00:16

MySQLOracle數據

2013-10-09 09:35:49

數據中心遷移虛擬化

2013-10-09 09:54:46

數據中心云計算

2019-03-25 12:20:29

數據MySQL性能測試

2020-01-13 15:22:42

ERP云平臺遷移

2009-08-06 09:20:30

2019-04-23 08:00:08

Azure微軟云遷移

2010-08-12 09:43:31

CassandraMongoDB

2020-04-20 08:08:23

MongoDBElasticsear數據庫

2018-07-10 14:46:04

LinuxShellsudo

2015-09-14 14:49:39

MySQLMariaDBLinux

2017-10-16 00:17:56

云計算信息管理遷移

2023-08-23 09:00:00

區塊鏈以太坊

2020-12-02 14:38:21

SQL數據庫MySQL

2021-07-13 09:45:48

CentOSAlmaLinux命令

2018-08-15 15:15:00

數據基礎設施遷移
點贊
收藏

51CTO技術棧公眾號

欧美精品日韩| 看片一区二区| 91碰在线视频| 国产精品扒开腿做| 欧美三级日本三级| 日韩大尺度在线观看| 欧美亚洲愉拍一区二区| 久久视频免费在线| 青梅竹马是消防员在线| 日韩精品在线免费看| 久久综合在线观看| 丁香花在线电影| 国产日韩综合av| 亚洲自拍另类欧美丝袜| 日韩视频在线观看一区| 午夜国产一区二区| 精品亚洲男同gayvideo网站| 亚洲精品美女在线观看播放| 鬼打鬼之黄金道士1992林正英| 日本免费观看视| 99久久综合| 精品视频久久久久久| 在线a免费观看| 成人啊v在线| 亚洲无人区一区| 永久免费在线看片视频| 国产中文字幕在线观看| 国产不卡视频一区二区三区| 国产精品午夜视频| 久久久久99精品成人片我成大片 | 欧美日韩国产免费一区二区三区| 97精品人妻一区二区三区香蕉 | a在线观看免费视频| 3344国产永久在线观看视频| 亚洲日本韩国一区| 亚洲春色综合另类校园电影| 婷婷五月综合激情| 福利电影一区二区三区| 成人伊人精品色xxxx视频| 四虎影院在线免费播放| 中国女人久久久| 欧美国产视频日韩| 日本中文字幕免费在线观看| 日韩欧美高清在线播放| 亚洲欧洲xxxx| 在线免费观看黄色小视频| 国产精品xxx在线观看| 日韩一区二区在线观看| 国产5g成人5g天天爽| 欧美一级做一级爱a做片性| 欧美在线视频日韩| 国产一级片黄色| 亚洲天堂导航| 日韩欧美中文第一页| 激情伊人五月天| 麻豆蜜桃在线观看| 欧美日韩国产综合新一区 | 日本中文字幕一区二区视频| 欧美孕妇性xx| 亚洲国产成人无码av在线| 制服诱惑一区二区| 日韩av电影手机在线观看| 超碰超碰超碰超碰| 天堂资源在线中文精品| 国产激情久久久| 日本中文字幕在线观看视频| 日韩av午夜在线观看| 国产精品久久久久久av福利| 日韩欧美国产另类| 久久国产精品第一页| 成人免费看吃奶视频网站| 国产成人av免费看| zzijzzij亚洲日本少妇熟睡| 极品尤物一区二区三区| 视频二区在线| 欧美国产精品v| 国产一区一区三区| 欧美xxxx做受欧美88bbw| 亚洲成a人片综合在线| 每日在线观看av| 亚洲成人激情社区| 欧美丰满一区二区免费视频| 久久久久无码精品| 日韩av网址大全| 伊人一区二区三区久久精品| 少妇aaaaa| 国产精品一国产精品k频道56| 日本久久91av| 国产精品无码久久久久成人app| 国产精品888| 另类视频在线观看+1080p| 69xxxx欧美| 亚洲精品va在线观看| 国产99久久九九精品无码| 成人黄色免费网站| 精品免费日韩av| 自拍偷拍视频亚洲| 欧美激情1区2区3区| 欧美夜福利tv在线| 欧美性极品xxxx做受| 伊人成人222| 国内视频在线精品| 日韩在线一区二区三区免费视频| 青青草手机视频在线观看| 免费看的黄色欧美网站| 91九色蝌蚪嫩草| 北岛玲日韩精品一区二区三区| 亚洲精品亚洲人成人网| 黄色一级一级片| 88久久精品| xxxxx成人.com| 欧美日韩综合一区二区三区| 国产乱码字幕精品高清av | 日韩欧美成人精品| 杨幂一区二区国产精品| 久久综合色占| 高清欧美性猛交xxxx黑人猛交| 久久精品国产亚洲av麻豆蜜芽| 成人h精品动漫一区二区三区| 亚洲视频在线观看日本a| 国产福利片在线观看| 91精品欧美久久久久久动漫| 亚洲精品国产熟女久久久| 激情六月综合| 亚洲在线视频观看| 77777影视视频在线观看| 色综合久久综合| 日本不卡视频一区| 综合激情婷婷| 国产欧美日韩专区发布| 国产福利小视频在线观看| 亚洲18女电影在线观看| 欧美日韩理论片| 91免费精品| 国产精品嫩草影院久久久| 免费在线性爱视频| 欧美日韩国产一中文字不卡| 欧美极品jizzhd欧美仙踪林| 女人香蕉久久**毛片精品| 国产日韩欧美在线看| 国产三级视频在线| 色琪琪一区二区三区亚洲区| 水蜜桃av无码| 国产模特精品视频久久久久| 国产日韩欧美一区二区三区四区| 在线观看av免费| 欧美一级xxx| 黄色一级视频在线观看| 国产精品资源站在线| 韩国黄色一级大片| 韩国三级成人在线| 成人444kkkk在线观看| 97在线公开视频| 亚洲欧洲综合另类在线| 久久综合在线观看| 欧美日韩三级| 国产精品视频入口| av2020不卡| 亚洲精品不卡在线| 国产精品第5页| 国产欧美日本一区视频| 日本激情视频在线播放| 天堂网在线观看国产精品| 国产欧美日韩亚洲精品| a视频在线免费看| 日韩午夜av电影| 国产精品a成v人在线播放| 99久久99久久免费精品蜜臀| 蜜桃传媒一区二区三区| 九九久久婷婷| 成人写真视频福利网| av理论在线观看| 亚洲国产精久久久久久 | 这里只有精品免费| 毛片aaaaa| 97se亚洲国产综合自在线观| 国产福利一区视频| 91免费精品| 国产v亚洲v天堂无码| 国产一二三在线| 国产亚洲精品一区二555| 国产精品怡红院| 天天色天天爱天天射综合| 亚洲黄色小说视频| 国产精品白丝jk黑袜喷水| 欧美爱爱视频免费看| 欧美精品系列| 99国产高清| 日韩成人影音| 久久成人国产精品| 青梅竹马是消防员在线| 欧美久久久久中文字幕| 国产一级一片免费播放| 国产婷婷色一区二区三区四区| www.com污| 国产精品五区| 真人做人试看60分钟免费| 亚州av日韩av| 97超级碰碰| 欧美xnxx| 91国产高清在线| 黄色网址在线免费观看| 日韩精品视频在线观看网址| 国产精品爽爽久久| 日本久久精品电影| 精品无码人妻一区二区三| 国产欧美精品区一区二区三区| jizzzz日本| 国产精品一国产精品k频道56| 26uuu成人| 精品国产乱码久久久久久果冻传媒 | 日韩精品www| 国产国语亲子伦亲子| 欧美午夜一区二区三区免费大片| 久久视频免费在线观看| 亚洲色大成网站www久久九九| 亚洲乱码国产乱码精品精大量| 国模娜娜一区二区三区| 无码少妇一区二区三区芒果| 亚洲国产网站| wwwwww欧美| 亚洲激情久久| 一个色的综合| 欧美日韩有码| 蜜桃av噜噜一区二区三区| 粉嫩一区二区三区四区公司1| 91精品国产自产在线观看永久| 欧美日韩大片| 98精品在线视频| 国产高清在线a视频大全| 久久精品国产亚洲精品2020| 国产三级视频在线| 亚洲午夜久久久久久久| 在线观看xxx| 亚洲第一免费网站| 噜噜噜久久,亚洲精品国产品| 91麻豆精品国产无毒不卡在线观看 | 在线观看日韩av电影| 日韩精品免费一区| 一区二区中文| 色一情一乱一乱一区91| 911精品美国片911久久久| 亚洲午夜久久久影院伊人| 欧美理论在线播放| 色综合视频二区偷拍在线| 国内成人自拍| 日韩aⅴ视频一区二区三区| 亚洲深夜福利在线观看| 麻豆av一区二区| 久久99国产精品视频| 日本不卡一区| 色天天综合网| 女同性恋一区二区| 午夜欧美精品久久久久久久| 亚洲精品国产suv一区88| 欧美三区美女| 国产精品999视频| 国产乱码精品| 美女黄色片视频| 美国毛片一区二区三区| 天天做天天干天天操| 国产麻豆欧美日韩一区| 日韩精品xxx| 99视频有精品| 中字幕一区二区三区乱码| 国产精品久久久久久久第一福利 | 国产探花一区二区三区| 成人免费视频网站在线观看| 呦呦视频在线观看| 欧美韩国日本一区| 波多野结衣家庭教师| 亚洲福利视频一区| 伊人中文字幕在线观看| 欧美性色黄大片手机版| 国产精品热久久| 亚洲高清久久久久久| 六十路在线观看| 久久精品国产久精国产一老狼| 影院在线观看全集免费观看| 羞羞色国产精品| 久久福利在线| 国产精品日韩欧美一区二区三区| 免费av一区二区三区四区| 亚洲一区二区三区午夜| 欧美人与禽猛交乱配视频| 国产99久久九九精品无码| 精品一区二区三区久久久| 超碰caoprom| 中文字幕二三区不卡| 欧美老熟妇一区二区三区| 欧美视频免费在线| 国产精品污视频| 精品一区二区亚洲| 国产欧美久久久久久久久| 97视频com| 国产精品免费精品自在线观看| 久久久久无码国产精品一区| 久久国产成人精品| 亚洲 高清 成人 动漫| 国产综合久久久久影院| 可以直接看的无码av| 亚洲欧洲制服丝袜| 波多野结衣视频免费观看| 精品嫩草影院久久| 淫片在线观看| 日韩免费精品视频| 大桥未久女教师av一区二区| 亚洲国产一区二区三区在线| 99精品福利视频| 91香蕉国产线在线观看| 国产午夜精品美女毛片视频| 精品少妇theporn| 欧美日韩成人激情| 久久精品色图| 欧美一级淫片丝袜脚交| 澳门精品久久国产| 中国黄色录像片| 麻豆精品精品国产自在97香蕉| 一区二区三区免费在线观看视频| 一区二区三区欧美亚洲| 亚洲一区二区三区网站| 国产偷亚洲偷欧美偷精品| 国内高清免费在线视频| 亚洲一区二区三区视频| 久久中文视频| 别急慢慢来1978如如2| 99精品视频在线观看免费| 麻豆疯狂做受xxxx高潮视频| 欧美夫妻性生活| 求av网址在线观看| 国产精品久久久久久五月尺| 欧美交a欧美精品喷水| 91黄色在线看| 国产福利91精品一区二区三区| 我要看一级黄色录像| 欧美色偷偷大香| 成人在线免费电影| 国产精品久久久久久av下载红粉| 九色精品91| 天天天干夜夜夜操| 国产亚洲欧美激情| 夜夜躁日日躁狠狠久久av| 亚洲天堂av在线免费| 电影一区二区三| 日韩视频在线播放| 蜜臀av性久久久久蜜臀aⅴ流畅| 国产毛片久久久久久久| 狠狠色狠色综合曰曰| 青青久草在线| 国产精品扒开腿爽爽爽视频| 成人黄色小视频| 亚洲精品手机在线观看| 亚洲欧洲精品一区二区三区不卡| 亚洲午夜激情视频| 日韩在线观看免费全| 亚洲精品aa| 成人毛片100部免费看| 粉嫩高潮美女一区二区三区| 国产一级淫片免费| 日韩理论片久久| 日韩一区精品| 麻豆视频传媒入口| 波多野结衣在线一区| 6080午夜伦理| 日韩在线视频免费观看高清中文| 成人短视频软件网站大全app| 亚洲一区 在线播放| 国产成人av电影| www.国产色| 最近2019中文字幕大全第二页| 欧美精品影院| 国产肥臀一区二区福利视频| 久久久久国色av免费看影院| 在线中文字幕网站| 色综合男人天堂| 综合国产视频| 樱花草www在线| 欧美日韩亚洲91| 免费黄色在线观看| 国产日韩二区| 麻豆高清免费国产一区| 久久精品一级片| 亚洲人午夜色婷婷| 国产激情综合| av免费中文字幕| 亚洲乱码日产精品bd| 无码国产伦一区二区三区视频 | 精品国产第一国产综合精品| 天堂…中文在线最新版在线| 国产精品嫩草99a| 日韩有码第一页| 国产精品爽黄69天堂a| 黄色av日韩| 91无套直看片红桃在线观看| 欧美v亚洲v综合ⅴ国产v| jizz内谢中国亚洲jizz| 国产一二三四五| 久久久蜜桃精品| 亚洲乱熟女一区二区| 国产精品一区二区三区毛片淫片|