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

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

python數(shù)據(jù)庫操作mysql:pymysql、sqlalchemy常見用法詳解

瀏覽:15日期:2022-07-27 18:05:36

本文實例講述了python數(shù)據(jù)庫操作mysql:pymysql、sqlalchemy常見用法。分享給大家供大家參考,具體如下:

相關(guān)內(nèi)容: 使用pymysql直接操作mysql 創(chuàng)建表 查看表 修改表 刪除表 插入數(shù)據(jù) 查看數(shù)據(jù) 修改數(shù)據(jù) 刪除數(shù)據(jù) 使用sqlmary操作mysql 創(chuàng)建表 查看表 修改表 刪除表 插入數(shù)據(jù) 查看數(shù)據(jù) 修改數(shù)據(jù) 刪除數(shù)據(jù) 首發(fā)時間:2018-02-24 23:59 修改: 2018-06-15,發(fā)現(xiàn)自己關(guān)于pymysql寫了對于數(shù)據(jù)的操作示例,但沒有寫表結(jié)構(gòu)的示例,于是添加上 直接操作mysql--pymysql:

直接操作mysql意思是利用python實現(xiàn)類似命令行模式下的mysql交互。

前提: 首先需要安裝python與mysql交互的庫【PyMySQL 是在 Python3 版本中用于連接 MySQL 服務(wù)器的一個庫】: 安裝模塊:pymysql:

pip3 install pymysql或者在Pycharm中安裝 使用: 首先導(dǎo)入模塊:import pymysql 連接數(shù)據(jù)庫 :數(shù)據(jù)庫連接對象 = pymysql.connect('host='localhost',port=3306,user=’root’,passwd=’123456’,db=’python_test’) 【如果需要支持中文,則加上charset=”utf8”】python數(shù)據(jù)庫操作mysql:pymysql、sqlalchemy常見用法詳解 創(chuàng)建游標【游標用于執(zhí)行sql語句和管理查詢到的結(jié)果】 :游標對象 = 數(shù)據(jù)庫連接對象.cursor() 執(zhí)行sql語句 :游標對象.execute(SQL語句) ,返回值是受影響行數(shù) 【execute可以執(zhí)行所有的sql語句,不論是表相關(guān)的,還是數(shù)據(jù)相關(guān)的。】 由于默認開始事務(wù),如果涉及修改、插入,則需要提交:連接對象.commit() ;以及撤銷修改、插入的回滾:連接對象.rollback() executemany是同時執(zhí)行多條sql語句【以多組參數(shù)的格式,executemany(self,query,args)】: python數(shù)據(jù)庫操作mysql:pymysql、sqlalchemy常見用法詳解 獲取結(jié)果:

獲取一條結(jié)果:data = 游標對象.fetchone()

獲取全部結(jié)果:data=游標對象.fetchall()

獲取指定數(shù)量結(jié)果:data=游標對象.fetmany(x)

獲取結(jié)果后,就會將對應(yīng)的結(jié)果刪掉,比如fetchone是獲取一條,那么這一條就會從原來的結(jié)果中刪除

游標對象.rowcount()可以獲得執(zhí)行sql語句后受影響的行數(shù)

python數(shù)據(jù)庫操作mysql:pymysql、sqlalchemy常見用法詳解 關(guān)閉游標: 游標對象.close() 關(guān)閉數(shù)據(jù)庫連接:數(shù)據(jù)庫連接對象.close()示例:1.創(chuàng)建連接:

import pymysql#創(chuàng)建連接conn=pymysql.connect(host='localhost',port=3306,user='root',passwd='123456',db='python_test')#創(chuàng)建游標cursor=conn.cursor()#..............操作過程#關(guān)閉游標cursor.close()#關(guān)閉連接conn.close()2.執(zhí)行創(chuàng)建表:

import pymysqlconn=pymysql.connect(host='localhost',port=3306,user='root',password='123456',db='it',charset='utf8')cursor=conn.cursor()sql='''create table user(id int PRIMARY KEY auto_increment,username VARCHAR(20),password VARCHAR(20),address VARCHAR(35) )'''cursor.execute(sql)conn.commit()cursor.close()conn.close()3.執(zhí)行查詢:

import pymysql#創(chuàng)建連接conn=pymysql.connect(host='localhost',port=3306,user='root',passwd='123456',db='python_test',charset='utf8')#創(chuàng)建游標cursor=conn.cursor()cursor.execute('select * from student;')print(cursor.fetchone())#獲取一條print(cursor.fetchmany(2))#獲取兩條print(cursor.fetchall())#獲取結(jié)果集合中的全部#關(guān)閉游標cursor.close()#關(guān)閉連接conn.close()4.執(zhí)行插入、修改、刪除:

import pymysql#創(chuàng)建連接conn=pymysql.connect(host='localhost',port=3306,user='root',password='123456',db='python_test',charset='utf8')#創(chuàng)建游標cursor=conn.cursor()print('-----------插入----------------')cursor.execute('insert into student values (’nazha’,2000,’男’);')cursor.execute('select * from student;')print(cursor.fetchall())print('-----------插入----------------')#cursor.executemany(self,query,args)cursor.executemany('insert into student value(%s,%s,%s);',[(’zhangsan’,18,’男’),(’lisi’,18,’男’)])cursor.execute('select * from student;')print(cursor.fetchall())print('-----------修改----------------')cursor.execute('update student set name = ’zhangsan1’ where name = ’zhangsan’;')cursor.execute('select * from student;')print(cursor.fetchall())print('----------刪除-----------------')cursor.execute('delete from student where name = ’lisi’;')cursor.execute('select * from student;')print(cursor.fetchall())print('---------------------------')#需要提交才能插入、成功修改、刪除conn.commit()#關(guān)閉游標cursor.close()#關(guān)閉連接conn.close()

結(jié)果:

((’lilei’, 18, ’男’), (’hanmeimei’, 18, ’女’), (’huluwa’, 18, ’男’), (’sunwukong’, 18, ’男’), (’baigujing’, 3000, ’女’), (’nazha’, 2000, ’男’))---------------------------((’lilei’, 18, ’男’), (’hanmeimei’, 18, ’女’), (’huluwa’, 18, ’男’), (’sunwukong’, 18, ’男’), (’baigujing’, 3000, ’女’), (’nazha’, 2000, ’男’), (’zhangsan’, 18, ’男’), (’lisi’, 18, ’男’))---------------------------((’lilei’, 18, ’男’), (’hanmeimei’, 18, ’女’), (’huluwa’, 18, ’男’), (’sunwukong’, 18, ’男’), (’baigujing’, 3000, ’女’), (’nazha’, 2000, ’男’), (’zhangsan1’, 18, ’男’), (’lisi’, 18, ’男’))---------------------------((’lilei’, 18, ’男’), (’hanmeimei’, 18, ’女’), (’huluwa’, 18, ’男’), (’sunwukong’, 18, ’男’), (’baigujing’, 3000, ’女’), (’nazha’, 2000, ’男’), (’zhangsan1’, 18, ’男’))---------------------------5.設(shè)置支持中文【創(chuàng)建連接時添加charset=”utf8”】:

import pymysql#創(chuàng)建連接# conn=pymysql.connect(host='localhost',port=3306,user=’root’,passwd=’123456’,db=’python_test’)conn=pymysql.connect(host='localhost',port=3306,user=’root’,passwd=’123456’,db=’python_test’,charset='utf8')#創(chuàng)建游標cursor = conn.cursor()effect_row= cursor.execute('select * from student;')print('執(zhí)行成功,受影響行數(shù):',effect_row)print(cursor.fetchall())conn.commit()cursor.close()conn.close()

添加前:

python數(shù)據(jù)庫操作mysql:pymysql、sqlalchemy常見用法詳解

添加后:

python數(shù)據(jù)庫操作mysql:pymysql、sqlalchemy常見用法詳解

使用sqlalchemy操作mysql:介紹: ORM 將數(shù)據(jù)庫中的表與面向?qū)ο笳Z言中的類建立了一種對應(yīng)關(guān)系,【ORM可以說是參照映射來處理數(shù)據(jù)的模型,比如說:需要創(chuàng)建一個表,可以定義一個類,而這個類存在與表相映射的屬性,那么可以通過操作這個類來創(chuàng)建一個表】 sqlmary是一個mysql的ORM前提: 安裝模塊:pip3 install sqlalchemy 使用: 導(dǎo)入模塊: 導(dǎo)入連接數(shù)據(jù)庫模塊:from sqlalchemy import create_engine 如果需要創(chuàng)建新表,則需要導(dǎo)入表結(jié)構(gòu)定義模塊:from sqlalchemy.ext.declarative import declarative_base 導(dǎo)入其他相關(guān)模塊,主要是映射的類,如字段映射為Column,如數(shù)據(jù)類型int映射為Integer,如索引映射為Index,需要什么導(dǎo)入什么:from sqlalchemy import Column,Integer,String 映射關(guān)系: 數(shù)據(jù)庫中 映射 模塊【如果可以從多個模塊處導(dǎo)入,用 | 分隔】【方式太多,可能有漏,但不影響導(dǎo)入】 表 Table from sqlalchemy import Table int Integer from sqlalchemy.types import Integer 索引 Index from sqlalchemy import Index 字段、列 Column from sqlalchemy import Column varchar VARCHAR、String from sqlalchemy.types import String | from sqlalchemy import String 外鍵 ForeignKey

from sqlalchemy import ForeignKey 連接數(shù)據(jù)庫:連接對象=create_engine(’數(shù)據(jù)庫類型+數(shù)據(jù)庫驅(qū)動名稱://用戶名:口令@機器地址:端口號/數(shù)據(jù)庫名’,編碼格式,echo) sqlalchemy支持多種API操作模式,可以使用不同的模式來連接操作數(shù)據(jù)庫:’數(shù)據(jù)庫類型+數(shù)據(jù)庫驅(qū)動名稱://用戶名:口令@機器地址:端口號/數(shù)據(jù)庫名’ 比如pymsql【py3常用】:mysql+pymysql://<username>:<password>@<host>/<dbname>[?<options> 其他參數(shù): echo是否顯示ORM轉(zhuǎn)成實際sql語句的過程,echo=True為顯 encoding為連接時使用的字符集 操作:

基本操作:

創(chuàng)建新表 方法一: 使用declarative 1.導(dǎo)入模塊from sqlalchemy.ext.declarative import declarative_base2.根據(jù)需要的元素來導(dǎo)入模塊from sqlalchemy import Column 導(dǎo)入需要的數(shù)據(jù)類型【注:數(shù)據(jù)類型在sqlalchemy中也有指向,所以也可以from sqlalchemy import String,Integer,Char】:from sqlalchemy.types import *3.創(chuàng)建連接,3.使用declarative_base來獲得一個類對象,此處我定義該對象為Base定義一個類,繼承declarative_base生成的類對象Base 使用__tablename__來定義表名 使用 列名 = Column(數(shù)據(jù)類型,其他列屬性…)等類似格式來定義字段 nullable=False 代表這一列不可以為空,index=True 表示在該列創(chuàng)建索 創(chuàng)建表:Base.metadata.create_all(engine)

from sqlalchemy import create_engine#負責(zé)導(dǎo)入連接數(shù)據(jù)庫的對象from sqlalchemy.ext.declarative import declarative_base#負責(zé)導(dǎo)入創(chuàng)建表的apifrom sqlalchemy import Column #負責(zé)導(dǎo)入列from sqlalchemy.types import *#負責(zé)導(dǎo)入列類型#數(shù)據(jù)庫連接engine = create_engine('mysql+pymysql://root:123456@localhost/python_test',encoding =’utf-8’,echo=True)#方式一:Base = declarative_base()class User(Base): __tablename__ = ’user’#表名 id = Column(Integer,primary_key=True) name = Column(String(32)) password = Column(String(64))Base.metadata.create_all(engine) 方法二:使用Table 1.導(dǎo)入模塊: from sqlalchemy import Table2.連接數(shù)據(jù)庫:engine=create_engine(….)3.獲取meta類,metadata=MetaData(engine)4.創(chuàng)建Table對象( 比如:t=Table('group' ,metadata,Column('id',Integer,primary_key=True),Column('group_name',String(32))) )5.創(chuàng)建表:metadata.create_all()

from sqlalchemy import create_enginefrom sqlalchemy import Tablefrom sqlalchemy import MetaDatafrom sqlalchemy import Columnfrom sqlalchemy.types import *from sqlalchemy.ext.declarative import declarative_base####下面的注釋部分可以與上面一句的未注釋的替換engine=create_engine('mysql+pymysql://root:123456@localhost/python_test',encoding =’utf-8’,echo=True)metadata=MetaData(engine) ### # Base=declarative_base()t=Table('group' ,metadata,#表名# 'group',Base.metadata,Column('id',Integer,primary_key=True),Column('group_name',String(32)))metadata.create_all()# Base.metadata.create_all(engine) 查看表: db_table=Base.metadata.tables#僅有當次運行中繼承了Base而創(chuàng)建的新表 db_tables=engine.table_names()#僅有表名 刪除表:Base.metadata.drop_all(engine) 修改表: 直接修改表所對應(yīng)的類結(jié)構(gòu)是無法修改成功的, 如果需要修改在程序中自定義的表的結(jié)構(gòu),那么需要手動修改,手動的方式有很多,比如直接engine.execute(sql語句)。。。。插入 數(shù)據(jù)【這里僅針對使用declarative_base創(chuàng)建的表,對于不是程序中才創(chuàng)建的,可以自己使用declarative_base建一個類來映射之前的表,只要映射一致,就能插入數(shù)據(jù)】 1.連接數(shù)據(jù)庫:engine=create_engine(….) 1.導(dǎo)入模塊:from sqlalchemy.orm import sessionmaker 2.獲取session_class類:Session_class=sessionmaker(bind=engine) 3.獲取session對象:s=Session_class() 4.使用s來添加: s.add()s.add_all() 5.提交數(shù)據(jù): s.commit()

from sqlalchemy import create_engine#負責(zé)導(dǎo)入連接數(shù)據(jù)庫的對象from sqlalchemy.ext.declarative import declarative_base#負責(zé)導(dǎo)入創(chuàng)建表的apifrom sqlalchemy import Column #負責(zé)導(dǎo)入列from sqlalchemy.types import *#負責(zé)導(dǎo)入列類型#數(shù)據(jù)庫連接engine = create_engine('mysql+pymysql://root:123456@localhost/python_test',encoding =’utf-8’,echo=True)Base = declarative_base()class User(Base): __tablename__ = ’user’#表名 id = Column(Integer,primary_key=True) name = Column(String(32)) password = Column(String(64)) group = Column(Integer)Base.metadata.create_all(engine)from sqlalchemy.orm import sessionmakerobj1=User(name=’lisi’,password=’123456’,group=1)Session=sessionmaker(bind=engine)s=Session()s.add(obj1)#users=[User(name=’wangwu’,password=’123456’,group=1), User(name=’zhaoliu’, password=’123456’, group=1), User(name=’sunqi’, password=’123456’, group=1) ]s.add_all(users)#s.commit() 查找 數(shù)據(jù) 同樣適用sessionmaker來查找,與插入相同,需要創(chuàng)建session_class對象(我定義為s) 使用s來查找: s.query(表對應(yīng)類)是相當于select對應(yīng)表,后面可以跟first()、all()等來獲取結(jié)果,也可以加filter、filter_by等來篩選結(jié)果獲取全部 : s.query(表對應(yīng)類).all() 【返回的是一個結(jié)果列表】查找指定: s.query(表對應(yīng)類).filter(表對應(yīng)類.xxx==xxxx)【filter獲取的是結(jié)果集,需要使用all(),first()等方法來獲取結(jié)果】查找指定: s.query(表對應(yīng)類).filter_by(xxx=xxxx)附:雖然返回值是一個結(jié)果集,但這個集合是一個類對象,如果想查看內(nèi)容,需要在表對應(yīng)的類中增加__repr__方法。多個篩選條件使用“,”隔開常見可用篩選條件【User是一個表對應(yīng)的類】: 使用filter,filter_by時:

User.name==’lisi’

User.name.like(“l(fā)isi%”))

User.name != ’lisi’ User.name.any() or_(篩選條件) 【代表里面的多個篩選條件以or組合,需要導(dǎo)入:from sqlalchemy import or_】 and_(篩選條件) 【代表里面的多個篩選條件以and組合,需要導(dǎo)入:from sqlalchemy import and_】【默認是and】 in_([篩選條件]) 【使用比如User.name.in_([’xiaxia’, ’lilei’, ’lover’])】 使用all時,以下是放在query里面的: User.name [這相當于不使用where的select name from 表] 連接查詢使用:s.query(表對應(yīng)類).join(表對應(yīng)類.xxx==xxxx)還有g(shù)roup_by,order_by等用法這里不做講解[什么時候有空再補吧!]

from sqlalchemy import create_engine#負責(zé)導(dǎo)入連接數(shù)據(jù)庫的對象from sqlalchemy.ext.declarative import declarative_base#負責(zé)導(dǎo)入創(chuàng)建表的apifrom sqlalchemy import Column #負責(zé)導(dǎo)入列from sqlalchemy.types import *#負責(zé)導(dǎo)入列類型#數(shù)據(jù)庫連接engine = create_engine('mysql+pymysql://root:123456@localhost/python_test',encoding =’utf-8’)Base = declarative_base()class User(Base): __tablename__ = ’user’#表名 id = Column(Integer,primary_key=True) name = Column(String(32)) password = Column(String(64)) group = Column(Integer) def __repr__(self): return '<id:%s name:%s group:%s>'%(self.id,self.name,self.group)Base.metadata.create_all(engine)from sqlalchemy.orm import sessionmakerobj1=User(name=’lisi’,password=’123456’,group=1)Session=sessionmaker(bind=engine)s=Session()a=s.query(User).all()a2=s.query(User).filter(User.name==’lisi’).first()a3=s.query(User).filter_by(name=’lisi’).first()print(a)print(a2)print(a3) 修改 數(shù)據(jù): 修改數(shù)據(jù)的基礎(chǔ)是先查找到數(shù)據(jù),查找:row=s.query(X).filter(X.xxx=xxx).first() 使用賦值語句修改 :row.xxx=xxxx

from sqlalchemy import create_engine#負責(zé)導(dǎo)入連接數(shù)據(jù)庫的對象from sqlalchemy.ext.declarative import declarative_base#負責(zé)導(dǎo)入創(chuàng)建表的apifrom sqlalchemy import Column #負責(zé)導(dǎo)入列from sqlalchemy.types import *#負責(zé)導(dǎo)入列類型#數(shù)據(jù)庫連接engine = create_engine('mysql+pymysql://root:123456@localhost/python_test',encoding =’utf-8’)Base = declarative_base()class User(Base): __tablename__ = ’user’#表名 id = Column(Integer,primary_key=True) name = Column(String(32)) password = Column(String(64)) group = Column(Integer) def __repr__(self): return '<id:%s name:%s group:%s>'%(self.id,self.name,self.group)Base.metadata.create_all(engine)from sqlalchemy.orm import sessionmakerobj1=User(name=’lisi’,password=’123456’,group=1)Session=sessionmaker(bind=engine)s=Session()row=s.query(User).filter(User.name==’lisi’).first()row.name=’lisi2’s.commit() 刪除 數(shù)據(jù): 刪除數(shù)據(jù)的基礎(chǔ)是先查找到數(shù)據(jù),查找:row=s.query(X).filter(X.xxx=xxx) 使用delete刪除:row.delete()

# coding: utf-8from sqlalchemy import create_engine#負責(zé)導(dǎo)入連接數(shù)據(jù)庫的對象from sqlalchemy.ext.declarative import declarative_base#負責(zé)導(dǎo)入創(chuàng)建表的apifrom sqlalchemy import Column #負責(zé)導(dǎo)入列from sqlalchemy.types import *#負責(zé)導(dǎo)入列類型#數(shù)據(jù)庫連接engine = create_engine('mysql+pymysql://root:123456@localhost/python_test',encoding =’utf-8’)Base = declarative_base()class User(Base): __tablename__ = ’user’#表名 id = Column(Integer,primary_key=True) name = Column(String(32)) password = Column(String(64)) group = Column(Integer) def __repr__(self): return '<id:%s name:%s group:%s>'%(self.id,self.name,self.group)Base.metadata.create_all(engine)from sqlalchemy.orm import sessionmakerobj1=User(name=’lisi’,password=’123456’,group=1)Session=sessionmaker(bind=engine)s=Session()a3=s.query(User).filter_by(name=’lisi1’)a3.delete()s.commit()外鍵相關(guān): 外鍵使用foregin_key創(chuàng)建 類中的relationship的作用:幫助ORM獲知他們的外鍵關(guān)系,以便ORM使用外鍵獲取相關(guān)數(shù)據(jù) relationship中的backref的用途:relationship使得可以在一個表中定義的relationshop能被兩個表使用,另一個表使用backref來獲取相關(guān)信息 relationship中的foreign_keys的用途:當有多個relationship時,為了避免ORM混淆多個relationship,特別的標注哪個外鍵是哪個relationship relationship中的secondary的用途:在多對多的關(guān)系中,填入的值是中間表,維持兩邊表關(guān)系。 一對一的外鍵關(guān)系: 1.導(dǎo)入模塊:from sqlalchemy import Foreign_key 2.建立外鍵(如:group = Column(Integer,ForeignKey('group.id')),建立關(guān)系(如:group_relation=relationship(’Group’,backref='g_users') 3.插入數(shù)據(jù) 4.查詢到一條數(shù)據(jù):如row=s.query(User).filter(User.name==’lisi’).first() 5.嘗試A表調(diào)用關(guān)系來獲取B(row.group_relation.group_name),B使用backref來獲取A的數(shù)據(jù)(row2.g_users) 下面的實例大概就是“一個開發(fā)人員對應(yīng)一個開發(fā)組的關(guān)系”

#負責(zé)導(dǎo)入連接數(shù)據(jù)庫的對象from sqlalchemy import create_enginefrom sqlalchemy.ext.declarative import declarative_base#負責(zé)導(dǎo)入創(chuàng)建表的apifrom sqlalchemy import Column,ForeignKey #負責(zé)導(dǎo)入列from sqlalchemy.types import *#負責(zé)導(dǎo)入列類型from sqlalchemy.orm import relationship#數(shù)據(jù)庫連接engine = create_engine('mysql+pymysql://root:123456@localhost/python_test',encoding =’utf-8’)Base = declarative_base()class Group(Base): __tablename__='group' id=Column(Integer,primary_key=True) group_name=Column(String(32),nullable=False) def __repr__(self): return '<id:%s group_name:%s>'%(self.id,self.group_name)class User(Base): __tablename__ = ’user’#表名 id = Column(Integer,primary_key=True) name = Column(String(32),nullable=False) password = Column(String(64),nullable=False) group = Column(Integer,ForeignKey('group.id'))#這里創(chuàng)建外鍵 group_relation=relationship(’Group’,backref='g_users')#為ORM指明關(guān)系,方便ORM處理,第一個是對應(yīng)的類 def __repr__(self): return '<id:%s name:%s>'%(self.id,self.name)Base.metadata.create_all(engine)from sqlalchemy.orm import sessionmaker# group1=Group(group_name=’python’)# group2=Group(group_name=’linux’)# group3=Group(group_name=’AI’)# user1=User(name=’lisi’,password=’123456’,group=1)# user2=User(name=’zhangsan’,password=’123456’,group=2)# user3=User(name=’wangwu’,password=’123456’,group=3)# user4=User(name=’lilei’,password=’123456’,group=3)Session=sessionmaker(bind=engine)s=Session()# s.add_all([group1,group2,group3,user1,user2,user3,user4])# s.commit()# row=s.query(User).filter(User.name==’lisi’).first()row=s.query(User).first()print(row.group_relation.group_name)#這里User通過關(guān)系來獲取Group的數(shù)據(jù)row2=s.query(Group).first()print(row2)print(row2.g_users)#這里Group通過relationship的backref來獲取User的數(shù)據(jù)一對多關(guān)系,外鍵關(guān)聯(lián) 以一個老師能做一個班的班主任此外還能做另一個班的副班主任為例【即一個老師能對應(yīng)多個班級】 一對多關(guān)系的創(chuàng)建的核心是relationship中的foreign_keys 附:當你建表成功而插入數(shù)據(jù)失敗時,可以嘗試先刪除掉數(shù)據(jù)表,有時候因為外鍵依賴會導(dǎo)致插入失敗

#負責(zé)導(dǎo)入連接數(shù)據(jù)庫的對象from sqlalchemy import create_enginefrom sqlalchemy.ext.declarative import declarative_base#負責(zé)導(dǎo)入創(chuàng)建表的apifrom sqlalchemy import Column,ForeignKey #負責(zé)導(dǎo)入列from sqlalchemy.types import *#負責(zé)導(dǎo)入列類型from sqlalchemy.orm import relationship#數(shù)據(jù)庫連接engine = create_engine('mysql+pymysql://root:123456@localhost/python_test',encoding =’utf-8’)Base = declarative_base()class Grade(Base): __tablename__='grade' id=Column(Integer,primary_key=True) grade_name=Column(String(32),nullable=False) def __repr__(self): return '<id:%s group_name:%s>'%(self.id,self.grade_name)class Teacher(Base): __tablename__ = ’teacher’#表名 id = Column(Integer,primary_key=True) name = Column(String(32),nullable=False) primary_grade = Column(Integer,ForeignKey('grade.id')) second_grade = Column(Integer,ForeignKey('grade.id')) primary_grade_relation=relationship(’Grade’,backref='first_teacher',foreign_keys=[primary_grade]) second_grade_relation=relationship(’Grade’,backref='second_teacher',foreign_keys=[second_grade]) def __repr__(self): return '<id:%s name:%s>'%(self.id,self.name)Base.metadata.create_all(engine)from sqlalchemy.orm import sessionmaker# grade1=Grade(grade_name=’python’)# grade2=Grade(grade_name=’linux’)# grade3=Grade(grade_name=’AI’)# grade4=Grade(grade_name=’Java’)# t1=Teacher(name=’lisi’,primary_grade=1,second_grade=2)# t2=Teacher(name=’zhangsan’,primary_grade=2,second_grade=1)# t3=Teacher(name=’wangwu’,primary_grade=4,second_grade=3)# t4=Teacher(name=’lilei’,primary_grade_relation=grade3,second_grade=4)#這里外鍵相關(guān)的比如primary_grade=x可以使用primary_grade_relation=對象來代替,# 會根據(jù)對象來轉(zhuǎn)成對應(yīng)id,不過問題是不知道grade3的準確id,因為可能創(chuàng)建順序不一致Session=sessionmaker(bind=engine)s=Session()# s.add_all([grade1,grade2,grade3,grade4])# s.add_all([t1,t2,t3,t4])# s.commit()row=s.query(Teacher).filter(Teacher.name==’lisi’).first()print(row.name,row.primary_grade_relation.grade_name)#這里Teacher通過關(guān)系來獲取Grade的數(shù)據(jù)print(row.name,row.second_grade_relation.grade_name)row2=s.query(Grade).first()print(row2.grade_name,row2.first_teacher)#這里Grade通過relationship的backref來獲取Teacher的數(shù)據(jù)print(row2.grade_name,row2.second_teacher) 多對多外鍵關(guān)聯(lián) 以選課中一門課能有多名學(xué)生,一個學(xué)生可以選多門課為示例: 其中relationship中的secondary的值是中間表,負責(zé)維持中間表與另外兩表的關(guān)系,創(chuàng)建多對多的核心是secondary

#負責(zé)導(dǎo)入連接數(shù)據(jù)庫的對象from sqlalchemy import create_enginefrom sqlalchemy.ext.declarative import declarative_base#負責(zé)導(dǎo)入創(chuàng)建表的apifrom sqlalchemy import Column,ForeignKey #負責(zé)導(dǎo)入列from sqlalchemy.types import *#負責(zé)導(dǎo)入列類型from sqlalchemy.orm import relationship#數(shù)據(jù)庫連接engine = create_engine('mysql+pymysql://root:123456@localhost/python_test',encoding =’utf-8’)Base = declarative_base()class SelectInfo(Base): __tablename__='selectClassInfo' id=Column(Integer,primary_key=True) sid=Column(Integer,ForeignKey('student.id')) cid=Column(Integer,ForeignKey('course.id')) '''使用declarative_base和Table 創(chuàng)建表時,secondary的填寫不一樣selectInfo2=Table(’selectClassInfo’,Base.metadata,Column(’sid’,Integer,ForeignKey(’student.id’))Column(’cid’,Integer,ForeignKey(’student.id’)))'''class Student(Base): __tablename__='student' id=Column(Integer,primary_key=True) name=Column(String(32),nullable=False) def __repr__(self): return '<id:%s name:%s>'%(self.id,self.name)class Course(Base): __tablename__ = ’course’ id = Column(Integer,primary_key=True) name = Column(String(32),nullable=False) student_relation=relationship(’Student’,secondary='selectClassInfo',backref='courses') # student_relation=relationship(’Student’,secondary=selectClassInfo2,backref='courses') # #如果使用Table來創(chuàng)建中間表,上面是這樣填的 def __repr__(self): return '<id:%s name:%s>'%(self.id,self.name)Base.metadata.create_all(engine)from sqlalchemy.orm import sessionmaker## s1=Student(name=’lisi’)# s2=Student(name=’zhangsan’)# s3=Student(name=’wangwu’)# s4=Student(name=’lilei’)# c1=Course(name=’python’,student_relation=[s1,s2])# c2=Course(name=’linux’,student_relation=[s3])# c3=Course(name=’AI’,student_relation=[s3,s4])# c4=Course(name=’Java’)# c4.student_relation=[s1,s2,s3,s4]##在一邊增加關(guān)系之后,在secondary中會加入兩邊的數(shù)據(jù)###Session=sessionmaker(bind=engine)s=Session()# s.add_all([s1,s2,s3,s4,c1,c2,c3,c4])# s.commit()row=s.query(Course).filter(Course.id==’4’).first()print(row.name,row.student_relation)#這里Course通過關(guān)系來獲取Student的數(shù)據(jù)row2=s.query(Student).filter(Student.id=='3').first()print(row2.name,row2.courses)#這里Student通過relationship的backref來獲取Course的數(shù)據(jù)補充說明:

1.engine 可以直接運行sql語句,方式是engine.execute(),返回值是結(jié)果集,可以使用fetchall等方法來獲取結(jié)果

2.其實創(chuàng)建表還有很多方法,可以使用各種對象來創(chuàng)建【比如在上面Table方式中也可以使用t來create(engine)】,但建議使用方式一

3.同樣的,不單創(chuàng)建表有各種方法,查看表,刪除表等也有多種操作方式,也是因為可以使用多種對象來操作

4.session也可以直接運行sql語句: session.execute()

附上sessionmake API官方文檔:http://docs.sqlalchemy.org/en/latest/orm/session_api.html里面詳盡而簡單的講解了用法

以及一個第三方輔助文檔:https://www.pythonsheets.com/notes/python-sqlalchemy.html 里面有不少關(guān)于sqlalchemy的用法例子

更多關(guān)于Python相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Python常見數(shù)據(jù)庫操作技巧匯總》、《Python數(shù)學(xué)運算技巧總結(jié)》、《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》、《Python入門與進階經(jīng)典教程》及《Python文件與目錄操作技巧匯總》

希望本文所述對大家Python程序設(shè)計有所幫助。

標簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: 少妇无码一区二区三区 | 欧美性xxxxx极品少妇 | 亚洲精品一二三四 | 韩国黄色片网站 | 椎名由奈中文字幕 | 小辣椒福利视频导航 | 国产又粗又猛又爽又黄的 | 无码人妻出轨黑人中文字幕 | 色偷偷亚洲男人的天堂 | 一本到视频 | 96视频在线 | 日韩精品久久一区二区 | 欧美国产在线观看 | 国产人与zoxxxx另类91 | 中文字幕日韩欧美一区二区 | 亚洲精品国精品久久99热 | 亚洲丁香婷婷久久一区二区 | 51嘿嘿嘿国产精品伦理 | 一本大道久久a久久综合婷婷 | 国精产品一区一区三区有限公司 | 亚洲一区二区三区四区五区乱码 | 解开乳罩喂领导吃奶 | 99久久免费精品国产免费高清 | 黄色a网站 | av性天堂网| 久久精品久久久久久噜噜老黄 | 少妇熟女久久综合网色欲 | 亚洲男人天堂视频 | 动漫av一区二区在线观看 | 三级黄色在线播放 | 精品香蕉99久久久久网站 | 69久久99精品久久久久婷婷 | 精品久久久久久久久久久aⅴ | 黄色欧美视频 | 亚洲顶级毛片 | 国产一区二区三区免费观看潘金莲 | 欧美视频网站 | 精品国产免费久久久久久桃子图片 | 户外少妇对白啪啪野战 | 国产精品奇米一区二区三区小说 | 久久精品国产一区二区三区 | 四虎永久在线精品免费网址 | 久久久夜| 国产精品久久久久久久久久妞妞 | 黄色免费网站在线 | 91精品综合久久久久久五月天 | 日韩精品无码视频一区二区蜜桃 | 久久精品国产免费一区 | 亚洲 另类 熟女 字幕 | 中文字幕一区在线 | 日本在线观看免费 | 男女日批网站 | 黑人粗一硬一长一进一爽一a级 | 91精品国产高清一区二区三密臀 | 成人网站免费大全日韩国产 | 日韩影视一区 | 在线观看黄色网页 | 亚洲精品乱码久久久久久v 精品国产a∨无码一区二区三区 | 91精品无人区麻豆乱码1区2区介绍 | 国产免费丝袜调教视频 | 一本大道在线一本久道视频 | 韩国性生交大片免费观看视频 | 亚洲综合激情另类小说区 | 乱h高h女np群欢 | 欧美xxxx狂喷水 | 国产精品综合网 | 欧美日本三级少妇三级久久 | 亚洲精品乱码久久久久久蜜桃不卡 | 欧美国产日韩在线视频 | 性做久久久久久免费观看 | 国产精品污www在线观看 | 国产深夜福利视频在线 | 亚洲精品成人无码中文毛片不卡 | 四十路av | 黄色在线视频播放 | 一本一道av无码中文字幕﹣百度 | 国产学生美女无遮拦高潮视频 | 变态孕妇孕交av免费看 | 成人做爰69片免费看网站色戒 | 久久久久久久久久免费 | 久久美女性网 | 3344永久在线观看视频免费 | 欧美性在线观看 | 影音先锋久久久久av综合网成人 | 熟女俱乐部五十路六十路 | 国产视频亚洲 | 国产精品美女www爽爽爽视频 | 国产嫩草在线观看 | 中文字幕无码免费久久 | 日韩欧美视频在线 | 人妖和人妖互交性xxxx视频 | 88tv成人| 奇米777四色影视在线看 | 精品国产粉嫩内射白浆内射双马尾 | 综合网在线 | 爱逼av| 亚洲成av | 福利一区视频 | 男女下面进入的视频 | 欧美黑人粗暴多交高潮水最多 | 国产精品久久久久久久久人妻 | a免费在线 | 人人人妻人人人妻人人人 | 亚洲色图19p| 国产女主播一区 | www.色综合.com| 中文字幕五区 | 日本福利一区二区 | 日韩欧美猛交xxxxx无码 | 8x福利精品第一导航 | 天天爱av| caoporn国产一区二区 | 在线免费观看视频a | 亚洲人屁股眼子交1 | av无码不卡在线观看免费 | 人善交类欧美重口另类 | 日本黄色精品 | porny丨精品自拍视频 | 成人精品天堂一区二区三区 | xxav在线| 久久国产黄色片 | 香蕉综合网 | 日韩成人av网址 | 欧美高清性xxxxhdvideosex | 日韩毛片在线视频x | 日韩中文字幕区一区有砖一区 | 日韩乱码人妻无码系列中文字幕 | 国产成人亚洲精品狼色在线 | 女人18片毛片60分钟 | 青青草伊人网 | 国产精品综合色区在线观看 | 双性受爽到不停的喷水bl | jzjzjz欧美丰满少妇 | 亚洲一区二区三区国产 | 一二区在线观看 | 少妇高潮叫床对白xxxxx | 免费观看羞羞视频网站 | 都市激情自拍偷拍 | 国产无吗一区二区三区在线欢 | 视频精品一区二区三区 | 边啃奶头边躁狠狠躁 | 亚洲自拍偷拍一区二区三区 | 黄色av在| 亚洲 欧美 国产 日韩 精品 | 日日碰狠狠添天天爽五月婷 | 亚洲精品在线一区二区 | 少妇被躁爽到高潮无码文 | 久久福利网 | 又爽又大又黄a级毛片在线视频 | 精品免费国产一区二区三区四区 | 欧美性生活xxx | 久久aaaa片一区二区 | 伊人久久大香线焦av综合影院 | 激情五月色综合国产精品 | 一级α片免费看刺激高潮视频 | 国产精品第157页 | 日韩欧美中字 | 国产乱淫a∨片免费视频牛牛 | 特级av毛片免费观看 | 亚洲国产欧美日韩在线观看第一页 | 一道本一二三区 | 国产真实精品久久二三区 | 色妞av | 欧美日比视频 | 日韩精品免费一区二区夜夜嗨 | 国产精品a久久 | 未满成年国产在线观看 | 国产精品美女久久久久久 | 黄色免费观看网站 | 国产又色又爽又刺激在线观看 | 91亚瑟 | 国产成人精品无码一区二区 | 黑人一区 | 国产又粗又猛又爽又黄视频 | 中文日产日产乱码乱偷在线 | 亚洲国产精品久久久久婷蜜芽 | 国产精品丝袜黑色高跟鞋v18 | www.激情五月 | 射射射综合网 | 日本婷婷免费久久毛片 | 中文字幕丰满乱子伦无码专区 | 欧美精品videosex性欧美 | 亚洲日韩在线中文字幕综合 | 国产精品自拍在线 | 免费黄网站在线观看 | 成人黄色在线网站 | 香港三日三级少妇三级99 | 亚洲国产成人一区二区三区 | 亚洲三级欧美 | 99久久久无码国产精品不卡 | 四虎看黄| 婷婷天天 | 懂色一区二区三区久久久 | 久久婷婷国产91天堂综合精品 | 亚洲天堂av一区 | 欧美最猛黑人xxxx黑人表情 | 少妇高清精品毛片在线视频 | a天堂亚洲 | 国产精品亚洲综合色区韩国 | 亚洲精品久久久久久下一站 | 亚洲成熟少妇视频在线观看 | 欧美亚洲精品suv一区 | 亚洲久热| 国产www| 深爱开心激情网 | 久久精品国产精品亚洲红杏 | 日本黄频 | 性中国古装videossex | 午夜黄色影院 | 狠狠狠色丁香婷婷综合久久88 | 国产精品a久久 | 日韩一区二区在线视频 | 国产精品久久久午夜夜伦鲁鲁 | 色视频一区 | 精品国产自在久久现线拍 | 中国肥胖女人真人毛片 | 台湾av在线 | 又湿又紧又大又爽a视频国产 | 丰满少妇高潮叫久久国产 | 天天做天天爱夜夜爽毛片 | 欧美视频一二三区 | 国产一区二区福利 | 国产在线拍偷自揄拍无码 | 色哟哟视频在线观看 | 99在线精品视频 | 超碰免费av | 亚洲日韩欧美综合 | 性少妇mdms丰满| 久久性色 | 林由奈在线观看 | 网站毛片 | 成人在线看片 | 日韩一区二区三区在线播放 | 欧美三级理论 | av片在线观看 | 亚洲操图 | 欧美日韩久久久久久 | 日本中国内射bbxx | 日韩av免费播放 | 东京天堂热av | 亚洲一区色 | 亚洲免费中文 | 欧美人与动性xxxxx杂性 | 日韩久久高清 | 国产外围在线 | 久久久久九九九 | 欧美性大交| 久久久午夜视频 | 国产亚洲一区二区在线 | yyyy11111少妇无码影院 | 日本少妇被黑人猛cao | 国产精品久久久久久妇女6080 | 特级毛片网站 | 按摩毛片 | 欧美成人一区二区三区在线视频 | 美女毛片在线观看 | 丰满少妇大力进入 | 日韩精品免费一区二区在线观看 | 综合久久国产九一剧情麻豆 | 亚洲人性xxⅹ猛交 | 97夜夜澡人人爽人人 | 欧美精品videos另类 | 免费a级黄毛片 | 91精品国产综合久久国产大片 | 久久久婷婷成人综合激情 | 九九九免费观看视频 | 国产精品久久久久久免费播放 | 色一情一乱一乱一区免费网站 | 人人曰| 日本黄区免费视频观看 | 在线免费日韩av | 亚洲视频网址 | 国产大尺度做爰床 | 日本人毛片 | 亚洲精品一区二区三区中文字幕 | 免费福利在线观看 | 欧美抠逼视频 | 色老头一区二区三区 | 一级二级av| 夜夜嗨av一区二区三区中文字幕 | 偷拍亚洲欧美 | 超碰最新在线 | a级黄色影院| av解说在线| 超碰在线最新地址 | 欧美一区二区在线观看视频 | 91网站免费 | 国产精品视频免费 | 特级毛片网站 | 久久99精品久久久久久青青日本 | 麻豆国产精品777777在线 | 国产人成高清在线视频99最全资源 | 日本japanese学生丰满 | 成人性视频在线 | 国产精品久久国产精麻豆96堂 | 欧美日韩色综合 | 亚洲精品视频久久 | 韩国一区二区三区在线观看 | av久久天堂三区 | swag国产精品一区二区 | 日本高清xxxxxxxxxx | 成人日韩在线观看 | 黑人巨大精品欧美黑白配亚洲 | 中文字幕亚洲精品 | 色五月天天 | 91免费国产精品 | 日本一区二区视频免费 | 国产成人专区 | 欧美日韩加勒比 | 亚l州综合另中文字幕 | 在线观看特色大片免费视频 | 久久国产经典 | 久久国内偷拍 | 公妇乱淫太舒服了 | 无码毛片aaa在线 | 伊人55yiren综合开心 | 国产精品高潮呻吟久 | 亚洲国产精品一区二区美利坚 | 天天澡天天狠天天天做 | 久久国产精品成人免费 | 激情综合亚洲色婷婷五月app | 国产无套乱子伦精彩是白视频 | 直接观看黄网站免费视频 | 在线观看污视频网站 | 白嫩日本少妇做爰 | 性色生活片 | 与黑人高h系列辣文 | 狠狠色噜噜狠狠狠狠色吗综合 | 国产精选av | 全国男人天堂网 | 在线观看的毛片 | av在线免费播放网站 | 欧美精品影院 | 玉足女爽爽91 | 国产成人av网 | 香蕉av一区 | 国产欧美另类精品久久久 | 永久免费看片在线播放 | 石原莉奈一区二区三区在线观看 | 俄罗斯av在线 | 蜜桃视频一区二区三区在线观看 | 国产高清在线a视频大全 | 激情视频网站 | 欧美大波乳人伦免费视频 | 欧美成人3d啪啪动漫 | 古装做爰无遮挡三级聊斋艳谭 | 国产精品人妻熟女毛片av久 | 成人免费看片又大又黄 | 亚洲乱亚洲乱妇无码 | 伊人久久激情 | 最近高清中文字幕免费 | 精品一区二区三区在线成人 | 五月婷婷天 | 男人天堂你懂的 | 日本极品丰满ⅹxxxhd | 国产成人精品毛片 | 99精产国品一二三产区区别麻豆 | 亚洲精品一区二区三区丝袜 | 强行无套内谢大学生初次 | 五月婷婷免费视频 | 久久15p| 国产a一区二区 | 亚洲精品中文字幕乱码三区91 | 毛片毛片毛片毛片 | 天天综合天天做天天综合 | 无码视频在线观看 | 欧美浓毛大泬视频 | 亚洲人成网7777777国产 | 日韩国产一区二区三区四区 | 亚洲第一成网站 | av毛片不卡| 日韩国产第一页 | 中文字幕无线码免费人妻 | 国产精品日韩av在线播放 | 成人久久av | 理论黄色片 | 国产999精品久久久久久 | 国产h视频在线 | 丁香激情综合久久伊人久久 | 亚洲一区精品视频 | 粉嫩av一区二区三区四区免费 | 在线看不卡av | 狠狠婷婷综合久久久久久 | 日本亚洲欧美在线 | 欧美日本一区二区三区 | 先锋影音中文字幕 | 激情五月婷婷综合 | 国产亚洲精品久久久97蜜臀 | 成人免费网站视频 | 久久国产加勒比精品无码 | 国产男女做爰免费网站 | 欧美日韩国产成人在线 | 国产三级在线视频 一区二区三区 | 亚洲成人黄色影院 | 久久婷婷色一区二区三区asmr | 黄色国产免费 | 亚洲天堂小视频 | 荷兰女人裸体性做爰 | 五月情网 | 国产美女网 | 91亚洲欧美中文精品按摩 | 日韩精品一区二区三区四区在线观看 | heyzo久久| 五月天婷婷在线观看 | 中字幕视频在线永久在线观看免费 | 国内精品卡一卡二卡三 | 亚洲精品久久久久中文字幕m男 | 99精品视频网站 | 丝袜 中出 制服 人妻 美腿 | 国内精品999 | 深夜视频在线免费观看 | 久草 在线| 4438五月天| 国产精品美女乱子伦高 | 欧美性猛交xxxⅹ乱大交小说 | 国产一伦一伦一伦 | 国产男女猛烈无遮挡免费视频 | 日韩一级高清 | 国产高潮视频在线观看 | 久久色婷婷 | av手机免费看 | 天海翼激烈高潮到腰振不止 | 18禁肉肉无遮挡无码网站 | 夜夜高潮夜夜爽夜夜爱爱 | 无码任你躁久久久久久 | 久久精品九九 | 亚洲一区二区自拍偷拍 | cao国产| 成人含羞草tv免费入口 | 中文字幕免费高清网站 | 99久久99久久久精品棕色圆 | 精品日韩一区二区三区免费视频 | 亚洲精品久久久久中文第一幕 | 一级大片在线观看 | 草草影院国产第一页 | 国产黄色在线网站 | 98在线视频 | 久久aⅴ免费观看 | av瑟瑟| 欧美xxxx视频| 国语自产拍精品香蕉在线播放 | 国产黄色一级片 | 国产一级午夜一级在线观看 | 亚洲精品综合五月久久小说 | 丰满少妇小早川怜子影片了 | 欧美三根一起进三p | 亚洲不卡高清视频 | 亚洲久久一区 | 隔壁老王国产在线精品 | 日日碰狠狠躁久久躁96avv | 91色站 | 欧美三级视频网站 | 国产日韩在线观看视频 | 第一宅男av导航入口 | av区无码字幕中文色 | 国产精品亚洲成在人线 | 欧美爱视频 | 一级片在线观看免费 | 成人免费小视频 | 国产探花一区二区 | 中文字幕日韩在线视频 | 好湿好紧太硬了我太爽了视频 | 欧美多人片高潮野外做片黑人 | 国语对白久久 | 久久精品丝袜高跟鞋 | 69视频免费观看 | av资源共享 | 九九伊人八戒 | 天堂网一区 | 日本不卡视频在线观看 | 久久国产色av免费观看 | 精品91视频 | 欧美xxxx片| 青青草91久久久久久久久 | 国产区亚洲区 | 欧美3p两根一起进高清免费视频 | 亚洲情侣av| 国产口爆吞精在线视频 | jzzjzz日本丰满成熟少妇 | 国产精品毛片一区视频播 | 黄色成人免费网站 | 无尽3d精品hentai在线视频 | 久久人人97超碰a片精品 | 色综合天天天天做夜夜夜夜做 | 四虎国产精品成人免费4hu | 无码国产精品一区二区免费i6 | 亚洲天堂毛片 | 91亚洲精华国产精华液 | 潘金莲4级淫片aaaa | 久久国产欧美日韩精品 | 国产美女爆我菊免费观看88av | 操干视频| 特级a老妇做爰全过程 | 国产激情免费视频 | 久久精品99国产国产精 | 久久精品4 | 日韩精品无码中文字幕一区二区 | 国产成人无码精品一区在线观看 | 久久亚洲精品国产精品紫薇 | 欧美一区二区在线免费观看 | 五月婷婷丁香综合 | 午夜精品一区二区三区在线观看 | 精品国产一区二区三区在线 | 直接观看黄网站免费视频 | 人人爽人人爽人人片av亚洲 | 亚洲aaaaaa特级| 久久棈精品久久久久久噜噜 | 疯狂撞击丝袜人妻 | 日韩免费一区二区三区 | 日本在线观看免费 | yy8男人的天堂 | 亚洲高清毛片一区二区 | 无码一区二区三区亚洲人妻 | 九一成人网 | 亚洲熟妇无码av | 国产精品久久久久9999高清 | 日韩福利在线观看 | 色香欲天天影视综合网 | 国产精品宾馆在线精品酒店 | 少妇高潮惨叫久久久久 | 日产一二三四五六七区麻豆 | 噼里啪啦在线看免费观看视频 | 明星乱淫免费视频欧美 | 一及黄色毛片 | 日韩中文免费 | 欧美日韩免费观看一区=区三区 | 自拍偷在线精品自拍偷无码专区 | 一级片在线观看免费 | 极品销魂美女一区二区 | 亚洲精品免费在线视频 | 久久免费小视频 | 欧美综合色区 | 精品久久久久久久久久久院品网 | 日韩午夜一区二区三区 | 人妻激情另类乱人伦人妻 | 女总裁呻吟双腿大开sm视频 | cao在线 | 国产精品日日做人人爱 | 中国女人内谢69xxxx | 手机免费看av片 | 国产成人无码久久久精品一 | 日韩欧美中字 | 国产亚洲精久久久久久无码77777 | 欧美另类极品videosbest使用方法 | 健美女人做爰视频 | 亚洲精品国产福利 | 精品在线观看免费 | 熟妇好大好深好满好爽 | 少妇与公做了夜伦理69 | 国产精品久久久 | 香港台湾日本三级大全 | 亚洲国产精品大学美女久久久爽 | 男人的影院 | 六月激情综合 | 欧美手机在线观看 | 性xxx4k欧美乱妇 | 精品国产乱码久久久久久108 | 天堂√中文最新版在线 | 亚洲精品久久久蜜夜影视 | 国产一级做a爰片久久毛片99 | 亚洲一区二区三区四区 | 特级毛片内射www无码 | 2019亚洲日韩新视频 | 欧美人禽杂交狂配 | 国产美女在线精品免费观看网址 | 国产噜噜噜噜久久久久久久久 | 观看毛片 | 亚洲国产精品无码av | 欧美亚洲黄色 | 在线视频一二区 | 啪啪tv网站免费入口 | 久久夜色精品国产欧美一区麻豆 | 99少妇偷拍视频在线 | 黄色一级片视频 | 91视频免费网址 | 1级黄色毛片| 一级国产国产一级 | 日韩在线一级 | 国产成人无码网站 | 国产精品码在线观看0000 | 中文字幕av亚洲精品一部二部 | 人人舔人人干 | 96精品高清视频在线观看软件 | 日韩综合网 | 日韩美女乱淫免费看视频大黄 | 久久亚洲一区二区三区成人国产 | 亚欧在线视频 | 桃色91 | 99久久婷婷国产综合精品免费 | 久久综合给合综合久久 | 国自产拍偷拍福利精品免费一 | 波多野一区| 久草福利资源在线观看 | 亚洲一在线| 这里只有精品视频在线 | 丝袜tk一丨视频vk | 青青在线视频观看 | 97影视| 国产精品成人国产乱一区 | 日日摸日日碰人妻无码老牲 | 又粗又大内射免费视频小说 | 精品一区二区三区av | 91私密视频 | 久久精品a亚洲国产v高清不卡 | 国产毛片18 | 777毛片| 国产精品va无码免费 | 97青草| 国产精品视频99 | 日本少妇中文字幕 | 成人性生交大片免费看冫视频 | 成人免费版欧美州 | 亚洲精品久久网白云av | 国产成人精品亚洲线观看 | 国产精品美女久久久久av爽李琼 |