sqlalchemy 多对多关系
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | # -*- coding: utf-8 -*- from sqlalchemy import Column, String, create_engine,ForeignKey,Text,Integer,Table from sqlalchemy.orm import sessionmaker,relationship from sqlalchemy.ext.declarative import declarative_base # 创建对象的基类: Base = declarative_base() # 初始化数据库连接: engine = create_engine( 'mysql+pymysql://root:root@localhost:3306/test' ) # # 创建DBSession类型: # DBSession = sessionmaker(bind=engine) # Table( # 'mapping', # Base.metadata, # Column('id',Integer,autoincrement=True,primary_key=True), # Column('recipe_id',Integer,ForeignKey('recipe.id')), # Column('ingredient_id',Integer,ForeignKey('ingredient.id')) # ) arctire_tag = Table( "arctire_tag" , Base.metadata, Column( 'arctire_id' ,Integer,ForeignKey( 'arctire.id' ),primary_key = True ), Column( "tag_id" ,Integer , ForeignKey( "tag.id" ),primary_key = True ), ) class Arctire(Base): __tablename__ = "arctire" id = Column(Integer , primary_key = True , autoincrement = True ) name = Column(String( 50 ) , nullable = False ) tags = relationship( "Tag" , backref = "arctires" , secondary = 'arctire_tag' ) def __repr__( self ): return "name:%s" % self .name class Tag(Base): __tablename__ = 'tag' id = Column(Integer , primary_key = True , autoincrement = True ) tag = Column(String( 50 ) , nullable = False ) def __repr__( self ): return "tag:%s" % self .tag Base.metadata.create_all(engine) |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | # -*- coding: utf-8 -*- from sqlalchemy import Column, String, create_engine,ForeignKey,Text,Integer,Table from sqlalchemy.orm import sessionmaker,relationship from sqlalchemy.ext.declarative import declarative_base # 创建对象的基类: Base = declarative_base() # 初始化数据库连接: engine = create_engine( 'mysql+pymysql://root:root@localhost:3306/test' ) # # 创建DBSession类型: # DBSession = sessionmaker(bind=engine) # arctire_tag = Table( # "arctire_tag", # Base.metadata, # Column('arctire_id',Integer,ForeignKey('arctire.id'),primary_key=True), # Column("tag_id",Integer , ForeignKey("tag.id"),primary_key=True), # ) class Arctire_tag(Base): __tablename__ = 'arctire_tag' arctire_id = Column(Integer,ForeignKey( 'arctire.id' ),primary_key = True ) tag_id = Column(Integer,ForeignKey( 'tag.id' ),primary_key = True ) class Arctire(Base): __tablename__ = "arctire" id = Column(Integer , primary_key = True , autoincrement = True ) name = Column(String( 50 ) , nullable = False ) tags = relationship( "Tag" , backref = "arctires" , secondary = 'arctire_tag' ) def __repr__( self ): return "name:%s" % self .name class Tag(Base): __tablename__ = 'tag' id = Column(Integer , primary_key = True , autoincrement = True ) tag = Column(String( 50 ) , nullable = False ) def __repr__( self ): return "tag:%s" % self .tag Base.metadata.create_all(engine) |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 一文读懂知识蒸馏
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下