# -*- 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)

  

# -*- 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)

  

sqlalchemy 多对多关系的更多相关文章

  1. pythonのsqlalchemy多对多关系

    现在来设计一个能描述“图书”与“作者”的关系的表结构,需求是 一本书可以有好几个作者一起出版 一个作者可以写好几本书 #!/usr/bin/env python from sqlalchemy imp ...

  2. 用SQLAlchemy创建一对多,多对多关系表

    多对多关系表的创建: 如果建立好多对多关系后,我们就可以通过关系名进行循环查找,比如laowang = Teacher.query.filter(Teacher.name=='laowang').fi ...

  3. python3 + flask + sqlalchemy +orm(3):多对多关系

    一篇文章有多个tag,一个tag也可以属于多篇文章,文章和tag存在多对多关系 config.py DEBUG = True #dialect+driver://root:1q2w3e4r5t@127 ...

  4. [ SQLAlchemy ] 自我引用型的多对多关系(Self-Referential Many-to-Many Relationship)理解

    参考: https://www.jianshu.com/p/2c6c76f94b88 https://madmalls.com/blog/post/followers-and-followeds/ 实 ...

  5. SQLAlchemy_定义(一对一/一对多/多对多)关系

    目录 Basic Relationship Patterns One To Many One To One Many To Many Basic Relationship Patterns 基本关系模 ...

  6. Flask 数据库多对多关系

    数据库使用关系建立记录之间的联系.其中,一对多关系是最常用的关系类型,它把一个记录和一组相关的记录联系在一起.实现这种关系时,要在“多”这一侧加入一个外键,指向“一”这一侧联接的记录.大部分的其他关系 ...

  7. Entity Framework 6 Recipes 2nd Edition(10-9)译 -> 在多对多关系中为插入和删除使用存储过程

    10-9. 在多对多关系中为插入和删除使用存储过程 问题 想要在一个无载荷的多对多关系中使用存储过程(存储过程只影响关系的连接表) 解决方案 假设有一个多对多关系的作者( Author)表和书籍( B ...

  8. 在thinkphp中,写的博文标签多对多关系的标签频率统计算法

    常常看到别人的博客里面,或者网站里面有这样随机颜色,但字体大小与标签出现频率有关的标签云,于是自己就想写一个.至于颜色的随机显示,那就很简单了,这里就不列代码. 因为正在学thinkphp,所以数据查 ...

  9. 如何决解项目中hibernate中多对多关系中对象转换json死循环

    先写一下原因吧!我是写的SSH项目,在项目中我遇到的问题是把分页对象(也就是pageBean对象)转化为json数据,下面为代码: public class PageBean <T>{// ...

随机推荐

  1. [py]字符串转换为列表

    字符串转换为列表 "[1,2,3]" ==> [1,2,3]

  2. 【LeetCode每天一题】 Merge k Sorted Lists(合并K个有序链表)

    Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity. E ...

  3. $router.query和$router.params的区别

    类型于get(query) 和 post(params) 1.query方式传参和接收参数   传参: this.$router.push({ path:"/xxx" query: ...

  4. jenkins 常用插件和配置项介绍和使用

    jenkins 上搜索不到的插件可以在如下地址下载: http://updates.jenkins-ci.org/download/plugins/ 1.Notification Plugin 介绍: ...

  5. 一个基于JRTPLIB的轻量级RTSP客户端(myRTSPClient)——实现篇:(六)RTP音视频传输解析层之音视频数据传输格式

    一.差异 本地音视频数据格式和用来传输的音视频数据格式存在些许差异,由于音视频数据流到达客户端时,需要考虑数据流的数据边界.分包.组包顺序等问题,所以传输中的音视频数据往往会多一些字节. 举个例子,有 ...

  6. MySQL数据类型--与MySQL零距离接触2-12主键约束

    定义一个主键,可以用PRIMARY KEY,也可以用KEY. 主键约束的字段禁止为空. 写入4条记录,查看它的自动编号: 自动编号确实是1 2 3 4 AUTO_INCREMENT字段必须定义为主键, ...

  7. 委托 匿名 lambda表达式

    #region 委托 delegate int ACT(int a, int b); static void Main(string[] args) { ACT act = new ACT(add); ...

  8. What is the reason for - java.security.spec.InvalidKeySpecException: Unknown KeySpec type: java.security.spec.ECPublicKeySpec

    支付中心Project重构完成,经过本地测试,并未发现问题.发布到测试环境后,测试发现请求光大扫码https接口时,出现了如下的异常: javax.net.ssl.SSLException: Serv ...

  9. 笔记 : WampServe加装PHP版本(7.2.3)为例

    1.由于正在学习Laravel框架,服务器wamp,Composer已搭建完成,但在安装laravel installer之后使用laravel new blog,报错为"This pack ...

  10. 五 js对象简介

    对象简介 js中没有"类"的概念,只有对象. A:对象声明方式有三种 ------------1.调用Object函数创建对象: var person = new Object; ...