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

秀啊,用Python快速開(kāi)發(fā)在線數(shù)據(jù)庫(kù)更新修改工具

開(kāi)發(fā) 后端
今天的教程,我們將繼續(xù)深入認(rèn)識(shí)dash_table的更多交互方面的功能,學(xué)習(xí)如何為渲染出的表格分頁(yè),并添加動(dòng)態(tài)內(nèi)容修改等交互功能。

 1 簡(jiǎn)介

這是我的系列教程「Python+Dash快速web應(yīng)用開(kāi)發(fā)」的第十三期,在上一期中,我們一起認(rèn)識(shí)了Dash自帶的交互式表格組件dash_table,并學(xué)會(huì)了如何自定義表格中不同部分的樣式。

而今天的教程,我們將繼續(xù)深入認(rèn)識(shí)dash_table的更多交互方面的功能,學(xué)習(xí)如何為渲染出的表格分頁(yè),并添加動(dòng)態(tài)內(nèi)容修改等交互功能。

 

 

 

[[392325]]

 

圖1

2 dash_table的基礎(chǔ)交互能力

dash_table的核心功能是賦予用戶與圖表進(jìn)行快捷交互的能力,下面我們來(lái)學(xué)習(xí)其基礎(chǔ)常用的一些交互功能:

2.1 分頁(yè)翻頁(yè)

當(dāng)我們要展示的數(shù)據(jù)行數(shù)較多時(shí),在網(wǎng)頁(yè)中渲染可以選擇分頁(yè),這在dash_table中實(shí)現(xiàn)起來(lái)比較方便,根據(jù)數(shù)據(jù)傳遞方式的不同,可以分為「前端分頁(yè)」與「后端分頁(yè)」:

2.1.1 前端分頁(yè)

前端分頁(yè)顧名思義,就是在我們?cè)L問(wèn)Dash應(yīng)用時(shí),表格內(nèi)所有頁(yè)面的數(shù)據(jù)一次性加載完成,適合數(shù)據(jù)量不大的情況,將數(shù)據(jù)存儲(chǔ)壓力轉(zhuǎn)移到瀏覽器端。

通過(guò)參數(shù)page_size設(shè)置每頁(yè)要顯示的記錄行數(shù),Dash會(huì)自動(dòng)幫我們分好頁(yè),并配上翻頁(yè)部件:

app1.py

  1. import dash 
  2. import dash_bootstrap_components as dbc 
  3. import dash_table 
  4.  
  5. import seaborn as sns 
  6.  
  7. df = sns.load_dataset('tips'
  8. df.insert(0, '#', df.index
  9.  
  10. app = dash.Dash(__name__) 
  11.  
  12. app.layout = dbc.Container( 
  13.     [ 
  14.         dash_table.DataTable( 
  15.             id='dash-table'
  16.             data=df.to_dict('records'), 
  17.             columns=[ 
  18.                 {'name'column'id'column
  19.                 for column in df.columns 
  20.             ], 
  21.             page_size=15,  # 設(shè)置單頁(yè)顯示15行記錄行數(shù) 
  22.             style_header={ 
  23.                 'font-family''Times New Romer'
  24.                 'font-weight''bold'
  25.                 'text-align''center' 
  26.             }, 
  27.             style_data={ 
  28.                 'font-family''Times New Romer'
  29.                 'text-align''center' 
  30.             } 
  31.         ) 
  32.     ], 
  33.     style={ 
  34.         'margin-top''50px' 
  35.     } 
  36.  
  37. if __name__ == '__main__'
  38.     app.run_server(debug=True

 

 

圖2

2.1.2 后端分頁(yè)

雖然前端分頁(yè)簡(jiǎn)單易用,但當(dāng)我們的數(shù)據(jù)很大時(shí),強(qiáng)行使用前端分頁(yè)會(huì)給「網(wǎng)絡(luò)傳輸」和「瀏覽器端」帶來(lái)不小的延遲和內(nèi)存壓力,嚴(yán)重影響用戶體驗(yàn),因此Dash貼心地為我們準(zhǔn)備了「后端分頁(yè)」方式。

這時(shí)首先我們得為DataTable設(shè)置參數(shù)page_action='custom',這是使用后端分頁(yè)的先決條件,接下來(lái)我們需要認(rèn)識(shí)一些新的參數(shù):

page_current,int型,對(duì)應(yīng)當(dāng)前翻到的頁(yè)碼;

page_count,int型,對(duì)應(yīng)顯示的總頁(yè)數(shù);

我們?cè)谑褂谩负蠖朔猪?yè)」時(shí),實(shí)際上就是通過(guò)用戶當(dāng)前翻到的頁(yè)碼,以及設(shè)定的page_size,來(lái)動(dòng)態(tài)地在翻頁(yè)后加載對(duì)應(yīng)批次的數(shù)據(jù),并控制顯示的總頁(yè)數(shù),參考下面這個(gè)簡(jiǎn)單的例子:

app2.py

 

  1. import dash 
  2. import dash_bootstrap_components as dbc 
  3. import dash_table 
  4. from dash.dependencies import Input, Output 
  5.  
  6. import seaborn as sns 
  7. import pandas as pd 
  8. from tqdm import tqdm 
  9.  
  10. # 壓力測(cè)試 
  11. df = pd.concat([sns.load_dataset('tips'for _ in tqdm(range(1000))], ignore_index=True
  12. df.insert(0, '#', df.index
  13.  
  14. app = dash.Dash(__name__) 
  15.  
  16. app.layout = dbc.Container( 
  17.     [ 
  18.         dbc.Spinner( 
  19.             dash_table.DataTable( 
  20.                 id='dash-table'
  21.                 columns=[ 
  22.                     {'name'column'id'column
  23.                     for column in df.columns 
  24.                 ], 
  25.                 page_size=15,  # 設(shè)置單頁(yè)顯示15行記錄行數(shù) 
  26.                 page_action='custom'
  27.                 page_current=0, 
  28.                 style_header={ 
  29.                     'font-family''Times New Romer'
  30.                     'font-weight''bold'
  31.                     'text-align''center' 
  32.                 }, 
  33.                 style_data={ 
  34.                     'font-family''Times New Romer'
  35.                     'text-align''center' 
  36.                 } 
  37.             ) 
  38.         ) 
  39.     ], 
  40.     style={ 
  41.         'margin-top''50px' 
  42.     } 
  43.  
  44.  
  45. @app.callback( 
  46.     [Output('dash-table''data'), 
  47.      Output('dash-table''page_count')], 
  48.     [Input('dash-table''page_current'), 
  49.      Input('dash-table''page_size')] 
  50. def refresh_page_data(page_current, page_size): 
  51.     return df.iloc[page_current * page_size:(page_current + 1) * page_size].to_dict('records'), 1 + df.shape[ 
  52.         0] // page_size 
  53.  
  54.  
  55. if __name__ == '__main__'
  56.     app.run_server(debug=True

可以看到,即使我們完整的數(shù)據(jù)集被我concat到24萬(wàn)行,加載應(yīng)用以及網(wǎng)頁(yè)內(nèi)翻頁(yè)時(shí)依然輕松自如毫無(wú)壓力,在實(shí)際應(yīng)用中你還可以將翻頁(yè)部分改成受到LIMIT與OFFSET控制的數(shù)據(jù)庫(kù)查詢過(guò)程,使得應(yīng)用運(yùn)行的更加快速高效:

 

 

圖3

2.2 對(duì)單元格內(nèi)容進(jìn)行編輯

講完了分頁(yè)翻頁(yè),接下來(lái)我們來(lái)學(xué)習(xí)dash_table中更加強(qiáng)大的功能——單元格內(nèi)容編輯。

一個(gè)現(xiàn)代化的web應(yīng)用當(dāng)然不能局限于僅僅查看數(shù)據(jù)這么簡(jiǎn)單,Dash同樣賦予了我們雙擊數(shù)據(jù)表單元格進(jìn)行數(shù)據(jù)編輯的能力,首先得設(shè)置參數(shù)editable=True,即開(kāi)啟表格編輯模式,接下來(lái)就可以對(duì)數(shù)據(jù)區(qū)域單元格進(jìn)行任意的雙擊選中編輯。

不過(guò)Dash默認(rèn)的單元格被選中的樣式忒丑了(是粉色的你敢信),因此我們可以利用下面的參數(shù)設(shè)置方式來(lái)自定義美化:

 

  1. style_data_conditional=[ 
  2.                 { 
  3.                     # 對(duì)選中狀態(tài)下的單元格進(jìn)行自定義樣式 
  4.                     "if": {"state""selected"}, 
  5.                     "background-color""#b3e5fc"
  6.                     "border""none" 
  7.                 }, 
  8.             ] 

來(lái)看一個(gè)形象的例子,我們對(duì)「前端分頁(yè)」方式渲染出的表格進(jìn)行隨意的修改,并在下方對(duì)利用pandas的compare比較出的數(shù)據(jù)框之間的差異結(jié)果進(jìn)行打?。?/p>

app3.py

  1. import dash 
  2. import dash_html_components as html 
  3. import dash_core_components as dcc 
  4. import dash_bootstrap_components as dbc 
  5. import dash_table 
  6. from dash.dependencies import Input, Output 
  7.  
  8. import seaborn as sns 
  9. import pandas as pd 
  10.  
  11. df = sns.load_dataset('tips'
  12. df.insert(0, '#', df.index
  13.  
  14. app = dash.Dash(__name__) 
  15.  
  16. app.layout = dbc.Container( 
  17.     [ 
  18.         dash_table.DataTable( 
  19.             id='dash-table'
  20.             data=df.to_dict('records'), 
  21.             columns=[ 
  22.                 {'name'column'id'column
  23.                 for column in df.columns 
  24.             ], 
  25.             fixed_rows={'headers'True}, 
  26.             page_size=15, 
  27.             editable=True
  28.             style_header={ 
  29.                 'font-family''Times New Romer'
  30.                 'font-weight''bold'
  31.                 'text-align''center' 
  32.             }, 
  33.             style_data={ 
  34.                 'font-family''Times New Romer'
  35.                 'text-align''center' 
  36.             }, 
  37.             style_data_conditional=[ 
  38.                 { 
  39.                     # 對(duì)選中狀態(tài)下的單元格進(jìn)行自定義樣式 
  40.                     "if": {"state""selected"}, 
  41.                     "background-color""#b3e5fc"
  42.                     "border""none" 
  43.                 }, 
  44.             ] 
  45.         ), 
  46.         html.H4('與原表格內(nèi)容比較:', style={'margin-top''50px'}), 
  47.         dcc.Markdown( 
  48.             '無(wú)差別'
  49.             id='markdown'
  50.             dangerously_allow_html=True 
  51.         ) 
  52.     ], 
  53.     style={ 
  54.         'margin-top''50px' 
  55.     } 
  56.  
  57.  
  58. @app.callback( 
  59.     Output('markdown''children'), 
  60.     Input('dash-table''data'), 
  61.     prevent_initial_call=True 
  62. def compare_difference(dash_table_data): 
  63.     print(pd.DataFrame(dash_table_data)) 
  64.  
  65.     return df.compare(pd.DataFrame(dash_table_data)).to_html() 
  66.  
  67.  
  68. if __name__ == '__main__'
  69.     app.run_server(debug=True

可以看到,我們成功地對(duì)指定單元格元素進(jìn)行了修改。

 

 

圖4

3 開(kāi)發(fā)數(shù)據(jù)庫(kù)內(nèi)容在線更新工具

在學(xué)習(xí)完今天的內(nèi)容之后,我們就可以開(kāi)發(fā)一個(gè)簡(jiǎn)單的,可在線自由修改并同步變動(dòng)到數(shù)據(jù)庫(kù)的小工具,這里我們以MySQL數(shù)據(jù)庫(kù)為例,對(duì)示例表進(jìn)行修改和更新:

首先我們利用下列代碼向示例數(shù)據(jù)庫(kù)中新建表格tips:

 

  1. from sqlalchemy import create_engine 
  2. import seaborn as sns 
  3.  
  4. df = sns.load_dataset('tips'
  5. df.insert(0, '#', df.index
  6.  
  7. engine = create_engine('mysql+pymysql://root:mysql@localhost/DASH'
  8.  
  9. df.to_sql('tips', con=engine, if_exists='replace'index=False

 

圖5

接下來(lái)我們就以創(chuàng)建好的tips表為例,開(kāi)發(fā)一個(gè)Dash應(yīng)用,進(jìn)行數(shù)據(jù)的修改和更新到數(shù)據(jù)庫(kù):

 

 

圖6

效果非常的不錯(cuò),你可以在我這個(gè)簡(jiǎn)單示例的基礎(chǔ)上,拓展更多新功能,也可以采取后端分頁(yè)+條件修改的方式來(lái)應(yīng)對(duì)大型數(shù)據(jù)表的修改,全部代碼如下:

app4.py

 

  1. import dash 
  2. import dash_bootstrap_components as dbc 
  3. import dash_core_components as dcc 
  4. import dash_html_components as html 
  5. import dash_table 
  6. from dash.dependencies import Input, Output, State 
  7.  
  8. from sqlalchemy import create_engine 
  9. import pandas as pd 
  10.  
  11. engine = create_engine('mysql+pymysql://root:mysql@localhost/DASH'
  12.  
  13. app = dash.Dash(__name__) 
  14.  
  15. app.layout = dbc.Container( 
  16.     [ 
  17.         dbc.Row( 
  18.             [ 
  19.                 dbc.Col(dbc.Button('更新數(shù)據(jù)表', id='refresh-tables', style={'width''100%'}), width=2), 
  20.                 dbc.Col(dcc.Dropdown(id='table-select', style={'width''100%'}), width=2) 
  21.             ] 
  22.         ), 
  23.         html.Hr(), 
  24.         dash_table.DataTable( 
  25.             id='dash-table'
  26.             editable=True
  27.             page_size=15, 
  28.             style_header={ 
  29.                 'font-family''Times New Romer'
  30.                 'font-weight''bold'
  31.                 'text-align''center' 
  32.             }, 
  33.             style_data={ 
  34.                 'font-family''Times New Romer'
  35.                 'text-align''center' 
  36.             }, 
  37.             style_data_conditional=[ 
  38.                 { 
  39.                     # 對(duì)選中狀態(tài)下的單元格進(jìn)行自定義樣式 
  40.                     "if": {"state""selected"}, 
  41.                     "background-color""#b3e5fc"
  42.                     "border""none" 
  43.                 }, 
  44.             ] 
  45.         ), 
  46.         dbc.Button('同步變動(dòng)到數(shù)據(jù)庫(kù)', id='update-tables', style={'display''none'}), 
  47.         html.P(id='message'
  48.     ], 
  49.     style={ 
  50.         'margin-top''50px' 
  51.     } 
  52.  
  53.  
  54. @app.callback( 
  55.     Output('table-select''options'), 
  56.     Input('refresh-tables''n_clicks'
  57. def refresh_tables(n_clicks): 
  58.     if n_clicks: 
  59.         return [ 
  60.             { 
  61.                 'label'table
  62.                 'value'table 
  63.             } 
  64.             for table in pd.read_sql_query('SHOW TABLES', con=engine)['Tables_in_dash'
  65.         ] 
  66.  
  67.     return dash.no_update 
  68.  
  69.  
  70. @app.callback( 
  71.     [Output('dash-table''data'), 
  72.      Output('dash-table''columns'), 
  73.      Output('update-tables''style')], 
  74.     Input('table-select''value'
  75. def render_dash_table(value): 
  76.     if value: 
  77.         df = pd.read_sql_table(value, con=engine) 
  78.  
  79.         return df.to_dict('records'), [ 
  80.             {'name'column'id'column
  81.             for column in df.columns 
  82.         ], {'margin-top''25px'
  83.  
  84.     else
  85.         return [], [], {'display''none'
  86.  
  87.  
  88. @app.callback( 
  89.     [Output('message''children'), 
  90.      Output('message''style')], 
  91.     Input('update-tables''n_clicks'), 
  92.     [State('dash-table''data'), 
  93.      State('table-select''value')] 
  94. def update_to_database(n_clicks, data, value): 
  95.  
  96.     if n_clicks: 
  97.  
  98.         try: 
  99.             pd.DataFrame(data).to_sql(value, con=engine, if_exists='replace'index=False
  100.  
  101.             return '更新成功!', {'color''green'
  102.         except Exception as e: 
  103.             return f'更新失敗!{e}', {'color''red'
  104.  
  105.     return dash.no_update 
  106.  
  107. if __name__ == '__main__'
  108.     app.run_server(debug=True

 

責(zé)任編輯:華軒 來(lái)源: Python大數(shù)據(jù)分析
相關(guān)推薦

2020-04-22 14:27:44

前端工具開(kāi)發(fā)

2021-04-18 21:54:36

Python工具開(kāi)發(fā)

2011-03-09 13:17:27

Web

2020-06-05 15:25:05

工具代碼瀏覽器

2017-08-08 15:05:55

工具定位數(shù)據(jù)庫(kù)

2017-12-22 09:30:45

PythonSQLite數(shù)據(jù)庫(kù)

2009-07-01 11:14:59

思科辦公軟件

2021-08-30 17:35:17

開(kāi)發(fā)在線文檔多人協(xié)作

2015-08-10 11:21:47

在線資源游戲開(kāi)發(fā)

2021-04-16 16:21:02

鴻蒙HarmonyOS應(yīng)用開(kāi)發(fā)

2009-03-19 10:08:09

C#數(shù)據(jù)庫(kù)查詢

2011-05-19 09:21:17

DreamCoder

2011-03-04 14:13:02

MySQL數(shù)據(jù)庫(kù)

2022-01-19 08:33:17

Oracle數(shù)據(jù)庫(kù)AutoUpgrad

2015-08-10 14:45:50

游戲開(kāi)發(fā)在線資源

2011-05-26 15:53:59

數(shù)據(jù)庫(kù)更新維護(hù)

2018-12-27 15:43:05

Python分析數(shù)據(jù)

2009-09-14 13:57:37

SQLite數(shù)據(jù)庫(kù)開(kāi)發(fā)

2011-03-28 15:44:45

惠普數(shù)據(jù)庫(kù)Oracle數(shù)據(jù)庫(kù)

2021-09-15 07:33:33

Java開(kāi)發(fā)在線
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

岛国一区二区三区| 久久久久成人片免费观看蜜芽| av在线中文| 午夜一区在线| 在线播放日韩专区| 色免费在线视频| 色爱综合区网| 99在线精品一区二区三区| 国产91在线播放九色快色| 一起草在线视频| gogo久久| 国产精品色呦呦| 国产高清自拍一区| 日韩一级片av| 日韩在线激情| 一区二区三区欧美激情| 国产综合动作在线观看| 免费在线不卡av| 欧美理论在线| 亚洲夜晚福利在线观看| 无码少妇一区二区三区芒果| se在线电影| 风间由美性色一区二区三区 | 日韩在线一区视频| 免费在线看污片| 国产精品成人在线观看| 精品在线视频一区二区三区| 国产精品久久久久久69| 丝袜亚洲另类丝袜在线| 欧美激情欧美激情| 精品无码人妻一区二区免费蜜桃| 日韩在线成人| 欧美日韩成人高清| 青青草原av在线播放| 亚洲色图美国十次| aaa亚洲精品一二三区| 91精品国产一区二区三区动漫| 国产成人精品亚洲| 噜噜噜91成人网| 久久免费国产视频| 欧美另类videoxo高潮| 成人香蕉社区| 日韩一区二区在线看| 黑森林精品导航| caoprom在线| 国产欧美一区二区精品秋霞影院 | 红杏一区二区三区| 欧美日韩精品欧美日韩精品| 那种视频在线观看| 美女91在线看| 日韩美女精品在线| 日韩欧美一区二区三区四区| 四虎在线视频| www.欧美.com| 精品亚洲欧美日韩| 少妇荡乳情欲办公室456视频| 国产精品一区二区在线播放| 成人免费视频网址| 国产精品成人无码| 日本成人在线不卡视频| 国产精品视频99| 国产成人av免费| 日本女人一区二区三区| 日本高清+成人网在线观看| 日韩精品乱码久久久久久| 久久一级电影| 亚洲欧美精品一区二区| 欧美黄色激情视频| 日韩精品中文字幕第1页| 中文字幕亚洲欧美日韩2019| 丁香六月激情综合| 欧美wwwww| 久久在精品线影院精品国产| 亚洲天堂久久新| 欧美军人男男激情gay| 国产午夜精品全部视频在线播放| 国产一二三四区在线| 999久久久国产精品| 久久九九国产精品怡红院 | 亚洲男人天堂av| 一区二区不卡在线视频 午夜欧美不卡'| 麻豆导航在线观看| 久久亚洲精精品中文字幕早川悠里| 免费看成人午夜电影| 国产高清视频在线观看| 1区2区3区精品视频| 日本一区二区三区视频在线观看| 3p在线观看| 一区二区三区影院| 午夜肉伦伦影院| 欧美日韩va| 精品免费国产一区二区三区四区| 欧美大片免费播放器| 日韩精品一区二区三区免费观影 | 国产网红女主播精品视频| 午夜欧美在线一二页| 成人午夜视频免费在线观看| 性爽视频在线| 欧美日本精品一区二区三区| 中国黄色片视频| 成人久久一区| 久久久久中文字幕2018| 国产乱码77777777| 国产乱国产乱300精品| 岛国视频一区| 888av在线| 欧美日韩在线视频首页| 不要播放器的av网站| 国产乱码精品一区二区三区亚洲人| 欧美一区二区三区视频免费播放| 在线免费播放av| 色综合天天爱| 777精品视频| 日本中文字幕在线观看视频| 久久精品女人天堂| 成人av片网址| 日本视频在线观看| 日韩欧美国产网站| 少妇极品熟妇人妻无码| 老司机精品在线| 国产午夜精品久久久| 1024手机在线观看你懂的| 雨宫琴音一区二区在线| 成人夜晚看av| 黄色毛片在线观看| 一区二区三区丝袜| xx欧美撒尿嘘撒尿xx| 久久a爱视频| 欧美老女人性生活| 在线观看一二三区| 91玉足脚交白嫩脚丫在线播放| 青春草在线视频免费观看| 台湾佬成人网| 日韩经典中文字幕| 国产在线视频第一页| 国精产品一区一区三区mba桃花| 日本一区二区三区免费观看| 天堂av中文在线观看| 精品sm在线观看| 欧美黑人性猛交xxx| 看片的网站亚洲| 欧美一区二区三区四区在线观看地址 | av网站在线不卡| 自拍亚洲一区| 日本免费在线精品| 午夜视频免费在线| 欧美日韩激情小视频| 少妇一级淫免费观看| 精品69视频一区二区三区Q| 91传媒视频在线观看| caoporn免费在线| 91精品在线一区二区| 精品国产大片大片大片| 久久国产夜色精品鲁鲁99| 亚洲精品一区二区三区蜜桃久 | 偷偷要91色婷婷| 少妇被狂c下部羞羞漫画| 午夜视频精品| 国产色视频一区| 成人午夜影视| 色网站国产精品| 欧美大波大乳巨大乳| 日本成人在线一区| 一区二区在线不卡| 国产精品久久久久久久久久久久久久久 | jizz中国少妇| 亚洲精品亚洲人成人网在线播放| 五月天六月丁香| 国产综合精品一区| 精品国产一区二区三区日日嗨| 久久99亚洲网美利坚合众国| 亚洲国产天堂网精品网站| 中文字幕第28页| 91麻豆成人久久精品二区三区| 一本大道熟女人妻中文字幕在线 | 精品处破学生在线二十三| jizz国产免费| 久久久精品日韩欧美| 中文字幕无码不卡免费视频| 欧美亚洲国产激情| 国产精品狠色婷| 天堂а√在线官网| 欧美mv日韩mv亚洲| 九九精品免费视频| 中文字幕在线视频一区| 亚洲美女高潮久久久| 欧美国产一级| 国产精品区一区二区三在线播放 | 在线视频欧美精品| 日本一区二区在线免费观看| 亚洲深夜影院| 日本高清不卡三区| 国产一区二区三区精品在线观看| 日韩视频免费中文字幕| 国产精品爽爽久久久久久| 亚洲国产wwwccc36天堂| a视频免费观看| 久久国产精品99久久久久久老狼| www.日本少妇| 日韩黄色大片| 国产精品亚洲综合| 亚洲承认视频| 欧美夫妻性生活xx| 日韩中文字幕观看| 日韩人体视频一二区| 亚洲av无码一区二区二三区| 国产在线精品一区在线观看麻豆| 中文字幕一区二区三区在线乱码| 日韩精品成人在线观看| 69久久夜色精品国产7777 | 午夜免费久久久久| 国产精品二线| 亚洲电影成人av99爱色| 97国产精品久久久| 欧美午夜激情视频| 妺妺窝人体色WWW精品| 丁香桃色午夜亚洲一区二区三区| 妺妺窝人体色www在线观看| 国内精品久久久久久久影视蜜臀| 亚洲欧美日韩国产yyy| 黑色丝袜福利片av久久| 97国产超碰| 精品久久在线| 欧美一级电影免费在线观看| 91网在线看| 中文字幕亚洲欧美日韩高清| 青青草娱乐在线| 精品88久久久久88久久久| 国产一区二区女内射| 欧美视频在线免费| 日韩少妇高潮抽搐| 亚洲精品高清在线| 成人免费看aa片| 国产99久久久精品| 一区二区免费av| 亚洲精品资源| 六月婷婷激情网| 日韩精品一区二区久久| 日本午夜精品一区二区三区| 日本精品视频| 成人av资源在线播放| a'aaa级片在线观看| 久久精品免费播放| 日本韩国在线视频爽| 在线视频亚洲欧美| 超碰在线国产| 国产亚洲xxx| 久久精品国产亚洲a∨麻豆| 日韩h在线观看| 精品国产va久久久久久久| 欧美日韩一卡二卡| 最新中文字幕第一页| 色伊人久久综合中文字幕| 毛片在线免费视频| 亚洲一区二区在线播放相泽| 国产一级做a爱免费视频| 亚洲大片精品永久免费| 欧美日韩综合一区二区| 亚洲一区二区三区在线看| 国产一级视频在线播放| 夜色激情一区二区| 日本少妇激情视频| 福利二区91精品bt7086| 亚洲国产av一区二区三区| 日韩欧美亚洲成人| 樱花视频在线免费观看| 欧美日韩一卡二卡三卡| 精品国产亚洲av麻豆| 日韩欧美一级在线播放| 黄色三级网站在线观看| 精品国产污污免费网站入口| 日韩在线视频免费| 国产一区二区欧美日韩| 亚洲人成色777777老人头| 欧美白人最猛性xxxxx69交| 精品人妻午夜一区二区三区四区| 欧美日韩一区精品| 国产免费一区二区三区最新不卡 | 成人黄色短视频在线观看| 精品中文视频| 国产一区视频观看| 国产一区二区三区四区二区| 日本免费高清不卡| 欧美偷拍自拍| 日韩亚洲视频| 日韩免费视频| 草b视频在线观看| 一区二区动漫| 亚洲精品20p| 成人av资源在线观看| av男人的天堂av| 亚洲欧美激情在线| 不卡的免费av| 欧美视频第二页| 成人无码一区二区三区| 亚洲欧美日韩精品久久奇米色影视 | 麻豆视频在线播放| 久久6精品影院| 成人私拍视频| 99久久自偷自偷国产精品不卡| 校园春色另类视频| 中国女人做爰视频| 91av一区二区三区| 免费在线黄色网址| 久久精品99无色码中文字幕| 免费**毛片在线| 日本高清久久天堂| aaa国产精品视频| 日韩精品在在线一区二区中文| av亚洲在线观看| 日韩精品视频在线观看视频 | 国产成人自拍高清视频在线免费播放| 亚洲蜜桃精久久久久久久久久久久| 亚洲欧美自拍偷拍| 青青视频在线免费观看| 精品国产91洋老外米糕| 欧美jizzhd欧美| 琪琪亚洲精品午夜在线| 深夜福利一区| 亚洲精品tv久久久久久久久| 欧美精品一级| 99久久99精品| 久久久久久久久蜜桃| 日本少妇性生活| 欧美一区二区视频观看视频| 成年午夜在线| 国产精品海角社区在线观看| 窝窝社区一区二区| 男女日批视频在线观看| 国产一区久久久| 午夜成人亚洲理伦片在线观看| 精品国产91久久久久久| 亚洲AV无码成人片在线观看| 上原亚衣av一区二区三区| 精精国产xxxx视频在线播放| 91中文在线视频| 手机在线电影一区| 久久久精品在线视频| 99精品欧美一区| 日本免费在线播放| 88在线观看91蜜桃国自产| 亚洲成人三级| 国产精品丝袜视频| 日产午夜精品一线二线三线| 青青草综合视频| 国产精品一区一区三区| 国内偷拍精品视频| 69av一区二区三区| av资源网站在线观看| 国产精品福利在线| 欧美色就是色| 各处沟厕大尺度偷拍女厕嘘嘘| 波多野结衣中文一区| 国产一级视频在线观看| 亚洲成色777777女色窝| 97蜜桃久久| 国产精品免费在线| 亚洲精品日韩久久| av网站免费在线播放| 欧美午夜宅男影院在线观看| 少妇激情av一区二区| 国产91成人在在线播放| 狠狠色丁香婷婷综合影院| 成年人视频在线免费| 欧美激情自拍偷拍| 亚洲精品国产欧美在线观看| 色偷偷888欧美精品久久久| 国产精品麻豆| 久久这里只有精品18| 成人午夜电影网站| 亚洲日本韩国在线| 亚洲性xxxx| 国产精品一区二区精品| 免费拍拍拍网站| ww久久中文字幕| 亚洲天堂狠狠干| 欧美日本高清视频| 北条麻妃一区二区三区在线观看| heyzo亚洲| 日本一区二区三区国色天香| 中文字幕在线观看视频一区| 欧美成人免费大片| 成人av动漫| 无码人妻丰满熟妇区五十路百度| 中文字幕欧美日本乱码一线二线| 国产毛片久久久久| 国语自产在线不卡| 国产日产一区| 一区二区亚洲精品| xx欧美撒尿嘘撒尿xx| 亚洲综合另类小说| 午夜精品久久久久久久99老熟妇| 国内成人精品一区| 神马久久一区二区三区| 亚洲精品在线网址| 天天爽夜夜爽夜夜爽精品视频| 男人天堂综合| 亚洲自拍偷拍区| 日韩综合在线视频| 1024手机在线视频|