黄a在线观看-黄a在线-黄a大片-黄色片在线看-黄色毛片免费-黄色大片网站

您的位置:首頁技術(shù)文章
文章詳情頁

Python3+SQLAlchemy+Sqlite3實現(xiàn)ORM教程

瀏覽:3日期:2022-06-27 18:18:18
一、Sqlite3、SQLAlchemy安裝

Sqlite3是Python3標(biāo)準(zhǔn)庫不需要另外安裝,只需要安裝SQLAlchemy即可。本文sqlalchemy版本為1.2.12

pip install sqlalchemy

Python3+SQLAlchemy+Sqlite3實現(xiàn)ORM教程

二、ORM操作

除了第一步創(chuàng)建引擎時連接URL不一樣,其他操作其他mysql等數(shù)據(jù)庫和sqlite都是差不多的。

2.1 創(chuàng)建數(shù)據(jù)庫連接格式說明

sqlite創(chuàng)建數(shù)據(jù)庫連接就是創(chuàng)建數(shù)據(jù)庫,而其他mysql等應(yīng)該是需要數(shù)據(jù)庫已存在才能創(chuàng)建數(shù)據(jù)庫連接;建立數(shù)據(jù)庫連接本文中有時會稱為建立數(shù)據(jù)庫引擎。

2.1.1 sqlite創(chuàng)建數(shù)據(jù)庫連接

以相對路徑形式,在當(dāng)前目錄下創(chuàng)建數(shù)據(jù)庫格式如下:

# sqlite://<nohostname>/<path># where <path> is relative:engine = create_engine(’sqlite:///foo.db’)

以絕對路徑形式創(chuàng)建數(shù)據(jù)庫,格式如下:

#Unix/Mac - 4 initial slashes in totalengine = create_engine(’sqlite:////absolute/path/to/foo.db’)#Windowsengine = create_engine(’sqlite:///C:pathtofoo.db’)#Windows alternative using raw stringengine = create_engine(r’sqlite:///C:pathtofoo.db’)

sqlite可以創(chuàng)建內(nèi)存數(shù)據(jù)庫(其他數(shù)據(jù)庫不可以),格式如下:

# format 1engine = create_engine(’sqlite://’)# format 2engine = create_engine(’sqlite:///:memory:’, echo=True)2.1.2 其他數(shù)據(jù)庫創(chuàng)建數(shù)據(jù)庫連接

PostgreSQL:

# defaultengine = create_engine(’postgresql://scott:tiger@localhost/mydatabase’)# psycopg2engine = create_engine(’postgresql+psycopg2://scott:tiger@localhost/mydatabase’)# pg8000engine = create_engine(’postgresql+pg8000://scott:tiger@localhost/mydatabase’)MySQL:

# defaultengine = create_engine(’mysql://scott:tiger@localhost/foo’)# mysql-pythonengine = create_engine(’mysql+mysqldb://scott:tiger@localhost/foo’)# MySQL-connector-pythonengine = create_engine(’mysql+mysqlconnector://scott:tiger@localhost/foo’)# OurSQLengine = create_engine(’mysql+oursql://scott:tiger@localhost/foo’)Oracle:

engine = create_engine(’oracle://scott:tiger@127.0.0.1:1521/sidname’)engine = create_engine(’oracle+cx_oracle://scott:tiger@tnsname’)MSSQL:

# pyodbcengine = create_engine(’mssql+pyodbc://scott:tiger@mydsn’)# pymssqlengine = create_engine(’mssql+pymssql://scott:tiger@hostname:port/dbname’)2.2 創(chuàng)建數(shù)據(jù)庫連接

我們以在當(dāng)前目錄下創(chuàng)建foo.db為例,后續(xù)各步同使用此數(shù)據(jù)庫。

在create_engine中我們多加了兩樣?xùn)|西,一個是echo=Ture,一個是check_same_thread=False。

echo=Ture----echo默認(rèn)為False,表示不打印執(zhí)行的SQL語句等較詳細(xì)的執(zhí)行信息,改為Ture表示讓其打印。

check_same_thread=False----sqlite默認(rèn)建立的對象只能讓建立該對象的線程使用,而sqlalchemy是多線程的所以我們需要指定check_same_thread=False來讓建立的對象任意線程都可使用。否則不時就會報錯:sqlalchemy.exc.ProgrammingError: (sqlite3.ProgrammingError) SQLite objects created in a thread can only be used in that same thread. The object was created in thread id 35608 and this is thread id 34024. [SQL: ’SELECT users.id AS users_id, users.name AS users_name, users.fullname AS users_fullname, users.password AS users_password nFROM users nWHERE users.name = ?n LIMIT ? OFFSET ?’] [parameters: [{}]] (Background on this error at: http://sqlalche.me/e/f405)

from sqlalchemy import create_engineengine = create_engine(’sqlite:///foo.db?check_same_thread=False’, echo=True)

Python3+SQLAlchemy+Sqlite3實現(xiàn)ORM教程

2.3 定義映射

先建立基本映射類,后邊真正的映射類都要繼承它

from sqlalchemy.ext.declarative import declarative_baseBase = declarative_base()

Python3+SQLAlchemy+Sqlite3實現(xiàn)ORM教程

然后創(chuàng)建真正的映射類,我們這里以一下User映射類為例,我們設(shè)置它映射到users表。

首先要明確,ORM中一般情況下表是不需要先存在的反而為了類與表對應(yīng)無誤借助通過映射類來創(chuàng)建;當(dāng)然表已戲存在了也無可以,在下一小結(jié)中你可以自己決定如果表存在時要如何操作是重新創(chuàng)建還是使用已有表,但使用已有表你需要確保和類的變量名與表的各字段名要對得上。

from sqlalchemy import Column, Integer, String# 定義映射類User,其繼承上一步創(chuàng)建的Baseclass User(Base): # 指定本類映射到users表 __tablename__ = ’users’ # 如果有多個類指向同一張表,那么在后邊的類需要把extend_existing設(shè)為True,表示在已有列基礎(chǔ)上進(jìn)行擴(kuò)展 # 或者換句話說,sqlalchemy允許類是表的字集 # __table_args__ = {’extend_existing’: True} # 如果表在同一個數(shù)據(jù)庫服務(wù)(datebase)的不同數(shù)據(jù)庫中(schema),可使用schema參數(shù)進(jìn)一步指定數(shù)據(jù)庫 # __table_args__ = {’schema’: ’test_database’} # 各變量名一定要與表的各字段名一樣,因為相同的名字是他們之間的唯一關(guān)聯(lián)關(guān)系 # 從語法上說,各變量類型和表的類型可以不完全一致,如表字段是String(64),但我就定義成String(32) # 但為了避免造成不必要的錯誤,變量的類型和其對應(yīng)的表的字段的類型還是要相一致 # sqlalchemy強(qiáng)制要求必須要有主鍵字段不然會報錯,如果要映射一張已存在且沒有主鍵的表,那么可行的做法是將所有字段都設(shè)為primary_key=True # 不要看隨便將一個非主鍵字段設(shè)為primary_key,然后似乎就沒報錯就能使用了,sqlalchemy在接收到查詢結(jié)果后還會自己根據(jù)主鍵進(jìn)行一次去重 # 指定id映射到id字段; id字段為整型,為主鍵,自動增長(其實整型主鍵默認(rèn)就自動增長) id = Column(Integer, primary_key=True, autoincrement=True) # 指定name映射到name字段; name字段為字符串類形, name = Column(String(20)) fullname = Column(String(32)) password = Column(String(32)) # __repr__方法用于輸出該類的對象被print()時輸出的字符串,如果不想寫可以不寫 def __repr__(self): return '<User(name=’%s’, fullname=’%s’, password=’%s’)>' % ( self.name, self.fullname, self.password)

Python3+SQLAlchemy+Sqlite3實現(xiàn)ORM教程

在上面的定義我__tablename__屬性是寫死的,但有時我們可能想通過外部給類傳遞表名,此時可以通過以下變通的方法來實現(xiàn):

def get_dynamic_table_name_class(table_name): # 定義一個內(nèi)部類 class TestModel(Base): # 給表名賦值 __tablename__ = table_name __table_args__ = {’extend_existing’: True} username = Column(String(32), primary_key=True) password = Column(String(32)) # 把動態(tài)設(shè)置表名的類返回去 return TestModel2.4 創(chuàng)建數(shù)據(jù)表

# 查看映射對應(yīng)的表User.__table__# 創(chuàng)建數(shù)據(jù)表。一方面通過engine來連接數(shù)據(jù)庫,另一方面根據(jù)哪些類繼承了Base來決定創(chuàng)建哪些表# checkfirst=True,表示創(chuàng)建表前先檢查該表是否存在,如同名表已存在則不再創(chuàng)建。其實默認(rèn)就是TrueBase.metadata.create_all(engine, checkfirst=True)# 上邊的寫法會在engine對應(yīng)的數(shù)據(jù)庫中創(chuàng)建所有繼承Base的類對應(yīng)的表,但很多時候很多只是用來則試的或是其他庫的# 此時可以通過tables參數(shù)指定方式,指示僅創(chuàng)建哪些表# Base.metadata.create_all(engine,tables=[Base.metadata.tables[’users’]],checkfirst=True)# 在項目中由于model經(jīng)常在別的文件定義,沒主動加載時上邊的寫法可能寫導(dǎo)致報錯,可使用下邊這種更明確的寫法# User.__table__.create(engine, checkfirst=True)# 另外我們說這一步的作用是創(chuàng)建表,當(dāng)我們已經(jīng)確定表已經(jīng)在數(shù)據(jù)庫中存在時,我完可以跳過這一步# 針對已存放有關(guān)鍵數(shù)據(jù)的表,或大家共用的表,直接不寫這創(chuàng)建代碼更讓人心里踏實

Python3+SQLAlchemy+Sqlite3實現(xiàn)ORM教程

從上邊的討論可以知道,我們可以定義model然后根據(jù)model來創(chuàng)建數(shù)據(jù)表(當(dāng)然也可以不創(chuàng)建),那可不可以反過來根據(jù)已有的表來自動生成model代碼呢,答案是可以的,使用sqlacodegen。

sqlacodegen安裝操作如下:

# 如果網(wǎng)絡(luò)通,直接pip安裝pip install sqlacodegen# 如果網(wǎng)絡(luò)不通,先在網(wǎng)絡(luò)通的機(jī)器上使用pip下載sqlacodegen及期依賴包pip download sqlacodegen# 上傳到真正要安裝的機(jī)器后再用pip安裝,依賴包也會自動安裝。版本可能會變化改成自己具體的包名pip install sqlacodegen-2.1.0-py2.py3-none-any.whl

sqlacodegen生成model操作如下:

# linux應(yīng)該被安裝在/usr/local/bin/sqlacodegen# mysql+pymysql示例# 可使用--tables指定要生成model的表,不指定時為所有表都生成model# 可使用--outfile指定代碼輸出到的文件,不指定時輸出到stdout# 注意只有當(dāng)表有主鍵時sqlacodegen才生成如下的class,不然會使用舊的生成Table()類實例的形式# 更多說明可使用-h參看sqlacodegen mysql+pymysql://user:password@localhost/dbname [--tables table_name1,table_name2] [--outfile model.py]

如我的一個示例操作如下,成功為指定表生成model:

Python3+SQLAlchemy+Sqlite3實現(xiàn)ORM教程

2.5 建立會話

增查改刪(CRUD)操作需要使用session進(jìn)行操作

from sqlalchemy.orm import sessionmaker# engine是2.2中創(chuàng)建的連接Session = sessionmaker(bind=engine)# 創(chuàng)建Session類實例session = Session()

Python3+SQLAlchemy+Sqlite3實現(xiàn)ORM教程

2.6 增(向users表中插入記錄)

# 創(chuàng)建User類實例ed_user = User(name=’ed’, fullname=’Ed Jones’, password=’edspassword’)# 將該實例插入到users表session.add(ed_user)# 一次插入多條記錄形式session.add_all( [User(name=’wendy’, fullname=’Wendy Williams’, password=’foobar’), User(name=’mary’, fullname=’Mary Contrary’, password=’xxg527’), User(name=’fred’, fullname=’Fred Flinstone’, password=’blah’)])# 當(dāng)前更改只是在session中,需要使用commit確認(rèn)更改才會寫入數(shù)據(jù)庫session.commit()

Python3+SQLAlchemy+Sqlite3實現(xiàn)ORM教程

2.7 查(查詢users表中的記錄)2.7.1 查實現(xiàn)

query將轉(zhuǎn)成select xxx from xxx部分,filter/filter_by將轉(zhuǎn)成where部分,limit/order by/group by分別對應(yīng)limit()/order_by()/group_by()方法。這句話非常的重要,理解后你將大量減少sql這么寫那在sqlalchemy該怎么寫的疑惑。

filter_by相當(dāng)于where部分,外另可用filter。他們的區(qū)別是filter_by參數(shù)寫法類似sql形式,filter參數(shù)為python形式。

更多匹配寫法見:https://docs.sqlalchemy.org/en/13/orm/tutorial.html#common-filter-operators

our_user = session.query(User).filter_by(name=’ed’).first()our_user# 比較ed_user與查詢到的our_user是否為同一條記錄ed_user is our_user# 只獲取指定字段# 但要注意如果只獲取部分字段,那么返回的就是元組而不是對象了# session.query(User.name).filter_by(name=’ed’).all()# like查詢# session.query(User).filter(User.name.like('ed%')).all()# 正則查詢# session.query(User).filter(User.name.op('regexp')('^ed')).all()# 統(tǒng)計數(shù)量# session.query(User).filter(User.name.like('ed%')).count()# 調(diào)用數(shù)據(jù)庫內(nèi)置函數(shù)# 以count()為例,都是直接func.func_name()這種格式,func_name與數(shù)據(jù)庫內(nèi)的寫法保持一致# from sqlalchemy import func# session.query(func.count(User3.name)).one()# 字段名為字符串形式# column_name = 'name'# session.query(User).filter(User3.__table__.columns[column_name].like('ed%')).all()# 獲取執(zhí)行的sql語句# 獲取記錄數(shù)的方法有all()/one()/first()等幾個方法,如果沒加這些方法,得到的只是一個將要執(zhí)行的sql對象,并沒真正提交執(zhí)行# from sqlalchemy.dialects import mysql# sql_obj = session.query(User).filter_by(name=’ed’)# sql_command = sql_obj.statement.compile(dialect=mysql.dialect(), compile_kwargs={'literal_binds': True})# sql_result = sql_obj.all()

Python3+SQLAlchemy+Sqlite3實現(xiàn)ORM教程

另外要注意該鏈接Common Filter Operators節(jié)中形如equals的query.filter(User.name == ’ed’),在真正使用時都得改成session.query(User).filter(User.name == ’ed’)形式,不然只后看到報錯“NameError: name ’query’ is not defined”。

2.7.2 參數(shù)傳遞問題

我們上邊的sql直接是our_user = session.query(User).filter_by(name=’ed’).first()形式,但到實際中時User部分和name=‘ed’這部分是通過參數(shù)傳過來的,使用參數(shù)傳遞時就要注意以下兩個問題。

首先,是參數(shù)不要使用引號括起來。比如如下形式是錯誤的(使用引號),將報錯sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) no such column

table_and_column_name = 'User'filter = 'name=’ed’'our_user = session.query(table_and_column_name).filter_by(filter).first()

其次,對于有等號參數(shù)需要變換形式。如下去掉了引號,對table_and_column_name沒問題,但filter = (name=’ed’)這種寫法在python是不允許的

table_and_column_name = User# 下面這條語句不符合語法filter = (name=’ed’)our_user = session.query(table_and_column_name).filter_by(filter).first()

對參數(shù)中帶等號的這種形式,現(xiàn)在能想到的只有使用filter代替filter_by,即將sql語句中的=號轉(zhuǎn)變?yōu)閜ython語句中的==。正確寫法如下:

table_and_column_name = Userfilter = (User.name==’ed’)our_user = session.query(table_and_column_name).filter(filter).first()2.8 改(修改users表中的記錄)

# 要修改需要先將記錄查出來mod_user = session.query(User).filter_by(name=’ed’).first()# 將ed用戶的密碼修改為modify_paswdmod_user.password = ’modify_passwd’# 確認(rèn)修改session.commit()# 但是上邊的操作,先查詢再修改相當(dāng)于執(zhí)行了兩條語句,和我們印象中的update不一致# 可直接使用下邊的寫法,傳給服務(wù)端的就是update語句# session.query(User).filter_by(name=’ed’).update({User.password: ’modify_passwd’})# session.commit()# 以同schema的一張表更新另一張表的寫法# 在跨表的update/delete等函數(shù)中synchronize_session=False一定要有不然報錯# session.query(User).filter_by(User.name=User1.name).update({User.password: User2.password}, synchronize_session=False)# 以一schema的表更新另一schema的表的寫法# 寫法與同一schema的一樣,只是定義model時需要使用__table_args__ = {’schema’: ’test_database’}等形式指定表對應(yīng)的schema

Python3+SQLAlchemy+Sqlite3實現(xiàn)ORM教程

2.9 刪(刪除users表中的記錄)

# 要刪除需要先將記錄查出來del_user = session.query(User).filter_by(name=’ed’).first()# 打印一下,確認(rèn)未刪除前記錄存在del_user# 將ed用戶記錄刪除session.delete(del_user)# 確認(rèn)刪除session.commit()# 遍歷查看,已無ed用戶記錄for user in session.query(User): print(user)# 但上邊的寫法,先查詢再刪除,相當(dāng)于給mysql服務(wù)端發(fā)了兩條語句,和我們印象中的delete語句不一致# 可直接使用下邊的寫法,傳給服務(wù)端的就是delete語句# session.query(User).filter_by(name=’ed’).first().delete()

Python3+SQLAlchemy+Sqlite3實現(xiàn)ORM教程

2.10 直接執(zhí)行SQL語句

雖然使用框架規(guī)定形式可以在一定程度上解決各數(shù)據(jù)庫的SQL差異,比如獲取前兩條記錄各數(shù)據(jù)庫形式如下。

# mssql/accessselect top 2 * from table_name;# mysqlselect * from table_name limit 2;# oracleselect * from table_name where rownum <= 2;

但框架存消除各數(shù)據(jù)庫SQL差異的同時會引入各框架CRUD的差異,而開發(fā)人員往往就有一定的SQL基礎(chǔ),如果一個框架強(qiáng)制用戶只能使用其規(guī)定的CRUD形式那反而增加用戶的學(xué)習(xí)成本,這個框架注定不能成為成功的框架。直接地執(zhí)行SQL而不是使用框架設(shè)定的CRUD雖然不是一種被鼓勵的操作但也不應(yīng)被視為一種見不得人的行為。

# 正常的SQL語句sql = 'select * from users'# sqlalchemy使用execute方法直接執(zhí)行SQLrecords = session.execute(sql)

更多關(guān)于Python3 SQLAlchemy Sqlite3相關(guān)教程請查看下面的相關(guān)鏈接

標(biāo)簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: 香港三级日本三级a视频 | 爱爱小视频网站 | 艳妇臀荡乳欲伦交换在线看 | 北京少妇宾馆露脸对白 | 色狠狠一区二区 | 国内精品久久久久影视老司机 | 人人妻人人澡人人爽欧美一区双 | 久久精品aⅴ无码中文字字幕蜜桃 | 向日葵视频在线 | 久久夜色精品亚洲 | 国产在线精品一区二区在线看 | 麻豆国产一区二区三区四区 | 国产另类xxxx | 国产精品9999久久久久 | 国产精品人妻一区二区高 | 小蝌蚪av| 国产男女做爰猛烈床吻戏网站 | 国产狂做受xxxxx高潮 | 国产真实伦对白全集 | 亚洲精品一区二区在线观看 | 中文字幕亚洲综合久久青草 | www17ccom小草影视 | 综合自拍亚洲综合图区高清 | 99久久精品午夜一区二区 | 中国精品18videosex性中国 | 亚洲精品不卡 | 欧美精品亚洲精品 | 搡老熟女国产 | 亚洲欧美日韩不卡 | 一本色道久久综合亚洲精品酒店 | 精品在线观看视频 | 日韩香蕉视频 | 日韩精品视频免费在线观看 | 免费看成人啪啪 | 日韩国产精品一区二区三区 | 久在线观看视频 | 国产精品15p | jzzjzzjzz日本丰满少妇 | 精品久久久久久久中文字幕 | 黄色天堂网 | 亚洲欧洲精品成人久久曰影片 | 97人人模人人爽人人喊0 | 亚洲激情自拍偷拍 | 美女天天操 | a国产一区二区免费入口 | heyzo综合国产精品216 | 亚洲激情片 | 亚洲国产一区视频 | 国产一区二区三区欧美 | 国产综合有码无码中文字幕 | 三男一女吃奶添下面视频 | 天天草夜夜草 | 黄色激情在线 | 好莱坞性战 | 精品偷拍一区二区三区在线看 | 三上悠亚日韩精品二区 | 亚洲综合性| 性——交——性——乱免费的 | 国产激情久久 | 91av蝌蚪| 日韩欧美亚洲天堂 | 国产午夜福利短视频 | 中文字幕一区二区三区久久蜜桃 | 手机av在线播放 | 性初体验美国理论片 | 2022色婷婷综合久久久 | 中国少妇xxxxxbbbbb | 亚洲国产精品免费在线观看 | 欧日韩不卡视频 | 丰满少妇在线观看网站 | 亚洲成a人v欧美综合天堂下载 | 国产精品久久久久aaaa | 国产大学生情侣呻吟视频 | 欧美成人片在线 | 少妇人妻丰满做爰xxx | 窝窝午夜看片 | 小猪佩奇第七季中文免费版 | 国产黄大片在线观看 | 中国女人av | 久久激情免费视频 | 国产乱子伦农村叉叉叉 | 精品偷拍一区二区三区在线看 | 日本视频在线免费观看 | 日本精品入口免费视频 | 国产精品第一区揄拍无码 | 成人亚洲国产 | 欧美成人精品欧美一级私黄 | 五月天婷婷缴情五月免费观看 | 国产69精品久久久久9999不卡免费 | 国产三级高清一区二区 | 国产va精品免费观看 | 国产成人精品久久二区二区 | 色欲综合久久中文字幕网 | av福利网址 | 国产免费福利视频 | 日本公妇乱淫hd | 国产99久张津瑜在线观看 | 久久久精品一区二区三区 | 香蕉视频在线观看网址 | 亚洲欧美综合精品成人导航 | 69xx在线观看视频 | 大阳蒂毛茸茸videoshd | av成人免费观看 | 强乱中文字幕亚洲精品 | 欧美激情在线一区二区三区 | 中文字幕一区二区三区精华液 | 精品视频免费在线 | 国产片黄色 | 奇米四色影视 | 欧美xxxxx做受vr91九色 | 婷婷狠狠爱 | 国产亚洲精品久久久久久久久久久久 | 香蕉午夜视频 | 国产免费一区二区三区 | 久久精品亚洲精品国产色婷 | 九草网 | v一区无码内射国产 | 国产淫片av片久久久久久 | 午夜影院免费在线观看 | 久久精品中文闷骚内射 | av大全免费 | 中文字幕日韩美女 | 精品卡一卡二卡3卡高清乱码 | 黑人巨大videos亚洲娇小 | 国产女人高潮视频在线观看 | 18禁男女爽爽爽午夜网站免费 | 一起艹在线观看 | 日韩中文字幕在线视频 | 精品久久久久久中文字幕2017 | 国产精品久久久福利 | 国产成人+亚洲欧洲+综合 | 亚洲国产精品无码一线岛国 | 欧洲a级毛片| 亚洲精品tv久久久久久久久久 | 欧美精品色呦呦 | 正在播放木下凛凛88av | 日本欧美三级 | 六月丁香激情 | 91精品国产福利在线观看的优点 | av无码久久久久不卡免费网站 | 一本久道视频一本久道 | 一本到在线 | 国产最爽的乱淫视频国语对白 | 日韩精品人妻系列无码专区免费 | 国产成人亚洲日韩欧美 | 97在线视频观看 | 国产伦精品一区二区三区妓女下载 | 天天天操天天天干 | 欧美v亚洲 | 色哟哟国产精品 | 久久久久国色av免费观看性色 | 日韩专区在线 | 操夜夜| 国产乱人乱精一区二视频 | 人妻洗澡被强公日日澡电影 | 免费男女乱淫真视频免费播放 | 日韩精品一区二区三区免费视频观看 | 中文字幕av伊人av无码av | 国产a一区二区 | 青青草狠狠干 | 男人午夜av | 好吊视频一区二区 | 亚洲人成久久婷婷精品五码 | 国产精品新婚之夜泄露女同 | 亚洲人成人 | 午夜美女国产毛片福利视频 | 亚洲呦女专区 | 成人国产精品免费观看视频 | 精品国产乱码久久久久夜 | 国产成人精品牛牛影视 | 可以看av| 日韩乱码在线观看 | 日韩 欧美| 国产成人久久精品亚洲 | 国产在线精品成人免费怡红院 | 成人av一区二区三区 | 天堂а√中文最新版在线 | 91在线观看 | heyzo北岛玲在线播放 | 四虎影库久免费视频 | 国产精品久久久久久久久久久不卡 | 日本少妇喂奶 | 超碰97人人人人人蜜桃 | 亚洲精品久久久久中文第一暮 | 亚洲字幕av一区二区三区四区 | 欧美女优一区 | 亚洲国产精品久久一线不卡 | 久久久久久欧美 | 亚洲成av人综合在线观看 | 日韩欧美中文字幕一区二区 | 日韩手机视频 | 国产一级二级 | 国产成人免费视频 | 精品乱人伦一区二区三区 | 精品久久久久久国产 | 黄a在线 | 国产特级av| 精品久久久久久无码人妻 | 国产三级福利 | 久在线观看 | 亚洲欧美日韩人成在线播放 | 7777精品久久久久久 | 99热精品久久只有精品 | 国内精品久久久久影视老司机 | 色综合91| 久久久久久人妻一区二区三区 | 亚洲暴爽av天天爽日日碰 | 天天草天天操 | 国产又黄又大又粗的视频 | 亚洲人成人伊人成综合网无码 | 天堂中文在线资 | 亚洲区av| 92看片淫黄大片一级 | 乱人伦中文无码视频在线观看 | 日韩成人免费观看视频 | 国产精品天干天干 | 国产精品国产亚洲精品看不卡15 | 激情区| 香港三日本三级少妇66 | 国产主播喷水 | 午夜精品视频一区二区三区在线看 | √新版天堂资源在线资源 | aaa一级黄色片 | 国产日韩欧美精品一区二区三区 | 成人精品一区日本无码网站 | 熟妇人妻激情偷爽文 | 久久久亚洲国产美女国产盗摄 | 九九热在线免费观看 | 久久黄色| www久久久精品 | 97精品国产97久久久久久粉红 | 亚洲国产欧美日韩 | 日韩中字幕 | 亚洲成人三区 | 91尤物视频在线观看 | 日本久久不卡 | 天堂一区人妻无码 | 久久精品国产一区二区三区不卡 | 亚洲国产精品久久一线不卡 | 日韩一区二区在线视频 | 欧美日韩1区2区 | 午夜影院一区二区 | 国产69精品久久久久孕妇大杂乱 | 无码精品一区二区三区免费视频 | 蜜臀久久99精品久久久久久宅男 | 日韩国产免费 | 又湿又紧又大又爽a视频 | 国产99热| 日产亚洲一区二区三区 | 亚洲视频91| 国产一区二区三区精品在线观看 | 四虎在线精品 | 成人亚洲精品久久久久软件 | 人人妻人人插视频 | 韩国少妇bbb毛毛片 韩国少妇xxxx搡xxxx搡 | 92看片淫黄大片看国产片图片 | 日韩精品一区二区三区视频 | 国产精成人品日日拍夜夜免费 | 国产午夜精品视频免费不卡69堂 | 国产午夜一区二区三区 | 国产精品久久久一区麻豆最新章节 | 免费看欧美一级特黄a大片 免费看欧美中韩毛片影院 免费看片91 | 午夜性视频国产牛牛视频 | 天天综合色 | 色黄视频| 欧美成人在线影院 | 成人3d动漫在线观看 | 永久免费成人 | 在线看成人 | 日本19禁啪啪免费观看www | 黄色av网站免费看 | 中文字幕人成乱码熟女香港 | 久久熟妇人妻午夜寂寞影院 | 成人黄色在线播放 | 91精品国产91久久久久游泳池 | 精品一区二区三区东京热 | 日韩欧美aaaa羞羞影院 | 亚洲国产精华液网站w | 成人h动漫精品一区二区器材 | 久久深夜福利 | 纤纤影视理伦片在线看 | 亚洲 中文 欧美 日韩 在线 | 传媒av在线 | 久久精品一区二区三区中文字幕 | 韩国黄色网址 | 青娱乐最新地址 | 日韩黄页在线观看 | 欧美牲交videossexeso欧美 | 国产一区二区在线精品 | 91av免费| 在线观看av的网址 | 国产精品原创巨作av | 乳霸冲田杏梨中文字幕担心学生的 | 欧美第二区 | 色欧美视频 | 免费看欧美大片 | 亚洲精品久久久久久中文传媒 | 亚洲国产精品无码久久久久高潮 | 搡老女人一区二区三区视频tv | 成人综合激情网 | 草草女人院| 国产精品对白清晰受不了 | 亚洲国产精品视频在线观看 | 国模无码大尺度一区二区三区 | 免费欧美日韩 | www..com色| 操干视频| 国产亚洲一区二区三区四区 | 在线 丝袜 欧美 日韩 制服 | 国产在线精品播放 | 男女xx网站 | 成人性生交免费大片 | 亚洲精品第一区二区三区 | 丁香激情综合久久伊人久久 | 无遮挡h肉动漫在线观看 | 亚洲人成无码网站18禁10 | 风间由美一区 | 日韩视频国产 | 爱情岛论坛永久亚洲品质 | 一本一道久久综合狠狠老精东影业 | 正在播放酒店约少妇高潮 | 午夜精品久久久久久久白皮肤 | 中文字幕在线播放av | 九九九九免费视频 | 国产三级精品三级男人的天堂 | 翘臀后进少妇大白嫩屁股 | 国产三级91| 欧美成人一区二区三区片免费 | 久久露脸国产精品 | 欧美日韩性生活 | 777午夜福利理论电影网 | 95在线视频| 实拍男女野外做爰视频 | 中文日韩| 两口子交换真实刺激高潮 | 国产偷国产偷亚洲精品孕妇 | 久久久久久久av麻豆果冻 | 日韩一区二区精品葵司在线 | 国产欧美一区二区三区在线看 | 欧美精品久久一区二区 | 中文字幕免费在线视频 | 国产一级视频免费观看 | 中文字幕乱码视频 | 日韩激情综合网 | 日日噜噜夜夜狠狠va视频v | 第一福利在线视频 | 日韩欧美综合一区 | 国产精品原创av片国产日韩 | 特级丰满少妇一级aaa爱毛片 | 亚洲免费视频观看 | 毛片最新网址 | h网站免费在线观看 | 7m精品福利视频导航 | 免费在线观看成年人视频 | 少妇性bbb搡bbb爽爽爽欧美 | 毛片毛片毛片 | h黄动漫日本www免费视频网站 | 国产精品无码无卡无需播放器 | 国产精品日韩精品欧美精品 | 精品久久网站 | 国产性生交xxxxx无码 | 中文字幕久久久久 | 亚洲8888| 春色视频www网站 | 少妇大叫太大太粗太爽了 | 亚洲国产婷婷香蕉久久久久久 | 久久影院一区 | 久草青青草 | 激烈的性高湖波多野结衣 | 欧美做受高潮1 | 国产真实乱人偷精品 | 国产精品传媒在线观看 | 天天爽夜夜爽夜夜爽精品视频 | 三级黄色免费片 | 51精品国产人成在线观看 | 久久久久久亚洲国产精品 | 欧美日韩精品二区 | 久久香蕉国产线熟妇人妻 | 在线观看黄| 无套内射无矿码免费看黄 | 久久精品区 | 中文字幕亚洲激情 | 91超碰中文字幕久久精品 | 激情五月婷婷综合 | 欧美一级片在线看 | 玖玖爱这里只有精品视频 | 美女丝袜av | 成人免费视频软件网站 | 看免费的毛片 | 精品无人码麻豆乱码1区2区 | 欧日韩无套内射变态 | 国产av一区二区三区 | 射网站 | 日韩综合网 | 国产又粗又猛又黄又爽无遮挡 | 国产xxxx做受视频 | 欧美精品网址 | 久久综合第一页 | 十八禁无码免费网站 | 国产 国语对白 露脸 | www国产91| 久久久国产精品亚洲一区 | 日本免费在线视频 | 热久久亚洲 | 日韩精品视频免费专区在线播放 | 噜噜狠狠狠狠综合久久 | 中文字幕被公侵犯的漂亮人妻 | 久久wwww| 国产成人在线视频播放 | 色婷婷777| 欧美日韩国产黄色 | 淫语视频 | 中文字幕在线观看一区二区 | www成人精品免费网站青椒 | 欧洲av在线| 日本精品巨爆乳无码大乳巨 | 香蕉久久影院 | 香蕉久久影院 | 国产女人被狂躁到高潮小说 | 91视频专区 | 亚洲精品乱码久久久久久蜜桃不卡 | 国产成a人亚洲精品无码樱花 | 亚洲色图首页 | 日本爽爽 | 国语久久 | 色哟哟精品一区二区 | 亚洲成a人v欧美综合天堂 | 日韩在线观看a | 一区二区三区成人 | 国产亚洲无线码一区二区 | 奇米影视久久久 | 我要看一级黄色毛片 | 成熟丰满中国女人少妇 | 欧洲做受高潮片 | 精品久久一区 | 青青草精品视频 | 国内精品伊人久久久久7777 | 日日碰狠狠躁久久躁 | 亚洲综合网在线观看 | 无码精品国产va在线观看dvd | 亚洲高清毛片一区二区 | 91美女片黄在线观看成欢阁 | 国产91丝袜在线观看 | 国产免费无码一区二区三区 | 亚洲在线免费视频 | 久久久久久久久女人体 | 九色蝌蚪9l视频蝌蚪9l视频开放 | 日韩激情视频一区二区 | 最新日韩av在线 | 精品视频国产 | 亚洲精品乱 | 宅男噜噜噜66网站在线观看 | 99福利在线观看 | 日本精品久久久久久 | 欧美精品国产动漫 | 久久亚洲精品中文字幕冲田杏梨 | 一级高清免费毛片 | 亚洲国产精品一区二区第一页 | 成人同人动漫免费观看 | 四虎www永久在线精品 | 青青草视频免费 | 日韩av片无码一区二区不卡电影 | 国产精品888| 爱情岛论坛成人永久网站在线观看 | 国精产品一二三区精华液 | 日本人妻人人人澡人人爽 | 国产精品内射视频免费 | 色先锋资源久久综合5566 | 香蕉av777xxx色综合一区 | 午夜国产精品国产自线拍免费人妖 | 亚洲午码 | 乱子伦一区二区三区 | 亚洲国产欧美在线 | 久久久久久99精品久久久 | 亚洲 欧美 日韩 综合 国产aⅴ | 亚洲色图网友自拍 | 亚洲视频播放 | 大学生久久香蕉国产线看观看 | 五月激情网站 | 女性隐私黄www网站视频 | a级一片| 国产夫妻久久 | а√ 天堂 在线官网 | 免费麻豆国产一区二区三区四区 | 国产美女又黄又爽又色视频免费 | 免费看成人aa片无码视频吃奶 | 成人不卡在线观看 | 亚洲综合欧美在线一区在线播放 | 欧美性猛交乱大交 | 国产成人精品无码片区在线观看 | av免费在线播放 | 国产精品粉嫩jk国产呦系列 | 国产乱码久久久久 | 国产香港明星裸体xxxx视频 | 国产乱人伦偷精品视频免下载 | 欧美一性一乱一交一视频 | 国产在线精品一区二区 | 天天插伊人 | 热播之家 | 中文字幕狠狠 | 女人色偷偷aa久久天堂 | 色翁荡息又大又硬又粗又爽电影 | 日韩一卡2卡3卡新区乱码来袭 | 天天爱天天色 | 青青草免费观看视频 | 88国产精品久久现线拍久青草 | 久久曰视频 | 久久久久999 | 欧美成人专区 | 五月天黄色网 | 久久久久99精品 | 国产精品一区二区四区 | www日韩在线 | 性猛交富婆xxxx乱大 | 男人巨茎大战欧美白妇 | 精品国产乱码久久久久久蜜柚 | 天天色棕合合合合合合合 | 大尺度av| 亚洲天堂网站在线 | 亚洲精品国产综合 | av中文资源 | 日本一区二区视频在线 | 色偷偷网站视频 | 高潮久久久久久 | 最新黄色网址在线观看 | 日韩精品网站在线观看 | 亚洲一级在线观看 | 狠狠做 | 国产伦精品一区 | 无码精品人妻一区二区三区人妻斩 | 久久久新视频 | 99久热re在线精品99 6热视频 | 最新版天堂资源中文在线 | 国产原创91 | 国产尤物在线观看 | 亚洲乱码一区二区三区三上悠亚 | 六月丁香色婷婷 | 五月婷婷婷婷 | 亚洲视频免费观看 | 在线va| 午夜福利一区二区三区在线观看 | sm调教小sao货叫主人语录 | 日韩一区二区三区视频在线观看 | 亚洲精品短视频 | 国产伦精品一区二区三区四区视频_ | 最新中文字幕在线观看视频 | 久久精品aaaaaa毛片 | 亚洲成a人片在线观看无码3d | 99re久久资源最新地址 | 午夜爱爱免费视频 | 日日av色欲香天天综合网 | 五月天婷婷视频在线观看 | 亚洲午夜小视频 | 精品黑人一区二区三区 | 日韩大胆人体 | 亚洲揄拍窥拍久久国产自揄拍 | 538国产精品视频一区二区 | 成人免费三p在线观看 | 天干夜天干夜天天免费视频 | 午夜成人在线视频 | wwwxxx日本人| 91视在线国内在线播放酒店 | 中文乱字幕视频一区 | 性猛交富婆╳xxx乱大交麻豆 | 麻豆成人久久精品二区三区小说 | 国产精品女人精品久久久天天 | 小罗莉极品一线天在线 | 亚洲国产又黄又爽女人高潮的 | 精品久久久久久中文字幕2017 | 青草视频在线播放 | 一二三国产777avav | av色在线 | 国产精品久久在线 | 成人免费一区二区三区 | 国产一级一片免费播放放a 国产一级一片射内视频 | 欧美成人精品激情在线观看 | 俄罗斯美女av | 久久女性裸体无遮挡啪啪 | 日韩av一卡二卡 | 婷婷色综合 | 老司机亚洲精品影院无码 | 日产久久久久久 | 亚洲激情欧美色图 | 91大片淫黄大片在线天堂 | 国产做爰视频 | 欧美激情一区二区三区蜜桃视频 | 丁香婷婷久久久综合精品国产 | 6080日韩午夜伦伦午夜伦 | 无码人妻久久一区二区三区 | 九色琪琪久久综合网天天 | 欧美色资源| 亚洲国产aⅴ成人精品无吗 欧洲熟妇色xxxx欧美老妇多毛网站 | 91资源新版在线天堂成人 | 侵犯在线一区二区三区 | 日批视频免费播放 | 国产人成 | 久久免费国产视频 | 久久国语露脸国产精品电影 | 欧美最猛性xxxxx大叫 | 无码少妇精品一区二区免费动态 | 成年美女黄网站色大免费全看 | 日本成人一级片 | 国产福利酱国产一区二区 | 中文天堂网 | 成人免费观看激情视频 | 免费无码一区二区三区a片 亚洲欧美日韩国产成人 | 日本a级毛片视频播放 | 99re国产在线| 暗呦丨小u女国产精品 | jizz偷窥| 夜夜夜高潮夜夜爽夜夜爰爰 | 一本久久a久久精品综合 | 亚洲人成网站日本片 | 国产天天综合 | 丝袜情趣国产精品 |