Python_sqlalchemy之多对多建表
生活随笔
收集整理的這篇文章主要介紹了
Python_sqlalchemy之多对多建表
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一對多建表https://blog.csdn.net/KK_2018/article/details/113446254?
from sqlalchemy import create_engine from sqlalchemy import String,Integer,Column,select,ForeignKey,Table from sqlalchemy.orm import sessionmaker,relationship from sqlalchemy.ext.declarative import declarative_base from sqlalchemy import or_,and_ # 查詢使用Base=declarative_base() engine=create_engine("mysql+pymysql://root:root@127.0.0.1:3306/pytest",pool_size=10,max_overflow=5,echo=True )# 借助第三張表進行多對多建表 # 表名user_2_language User2Lan=Table('user_2_language',Base.metadata,Column("user_id",ForeignKey('user.id'),primary_key=True),Column("language_id",ForeignKey('language.id'),primary_key=True))class User(Base):__tablename__='user'id=Column(Integer(),primary_key=True,autoincrement=True)name=Column(String(125),nullable=True)gender=Column(String(10),nullable=True,default='保密')town=Column(String(125))language=relationship('Language',backref='user', # 反向引用聲明# 這樣刪除user用戶時,Language中對應的內容才會被刪除cascade='all,delete',secondary=User2Lan)class Language(Base):__tablename__='language'id=Column(Integer(),primary_key=True,autoincrement=True)name=Column(String(125),nullable=True)advantage=Column(String(125),nullable=True)disadvantage=Column(String(125),nullable=True)# Base.metadata.create_all(engine) # 創建表 if __name__ == '__main__':Session=sessionmaker(engine)session=Session()'''# 添加數據# 添加用戶u1 = User(name='張三', gender='男', town='北京')u2 = User(name='李四', gender='男', town='上海')session.add_all([u1,u2])session.commit()# 添加語言l1=Language(name='python',advantage='開發快',disadvantage='運行慢')l1.user.append(u1)session.add(l1)session.commit()# 同時添加u3 = User(name='小劉', gender='女', town='鄭州')u3.language=[Language(name='C++', advantage='運行快', disadvantage='上手難'),Language(name='python', advantage='開發快', disadvantage='運行慢')]session.add(u3)session.commit()'''# 刪除、更新操作和一對多建表相同# 查詢number1=session.query(User).filter(User.id>0).count() # id大于0的用戶個數print(number1)# 以user的id降序排列,升序排列將‘-’去掉即可number2=session.query(User).order_by(-User.id).all()for item in number2:print(item.id)# 正則表達式查詢# %:表示零個或多個字符# _:表示任意單個字符# []:表示括號內所列字符中的一個# [^]:表示不在括號所列之內的單個字符man=session.query(User).filter(User.name.like("_三")).all()[0]print(man.name)# or_、and_查詢Obj1=session.query(User).filter(or_(User.id==1,User.id==2)).all()for item in Obj1:print(item.name)Obj2=session.query(User).filter(and_(User.name.like('%三'),User.id==1)).all()for item in Obj2:print(item.name)?
總結
以上是生活随笔為你收集整理的Python_sqlalchemy之多对多建表的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python_sqlalchemy——创
- 下一篇: Python里面的多线程