### ORM关系以及一对多:
mysql级别的外键,还不够ORM,必须拿到一个表的外键,然后通过这个外键再去另外一张表中查找,这样太麻烦了。SQLAlchemy提供了一个`relationship`,这个类可以定义属性,以后在访问相关联的表的时候就直接可以通过属性访问的方式就可以访问得到了。示例代码:

 1 # coding:utf-8
 2 # Author: liangjun.chen
 3
 4
 5 from sqlalchemy import create_engine, Column, Integer, String, Text, ForeignKey
 6
 7 from sqlalchemy.ext.declarative import declarative_base
 8 from sqlalchemy.orm import sessionmaker, relationship, backref
 9
10 HOSTNAME = '127.0.0.1'
11 PORT = 3306
12 DATABASE = 'sqlalchemy_first'
13 USERNAME = 'root'
14 PASSWORD = '123456'
15
16 DB_URI = 'mysql+pymysql://{username}:{password}@{host}:{port}/{dbname}?charset=utf8'.format(
17         username=USERNAME, password=PASSWORD, host=HOSTNAME, port=PORT, dbname=DATABASE
18 )
19 engine = create_engine(DB_URI)
20 Base = declarative_base(engine)
21 Session = sessionmaker(engine)
22 session = Session()
23
24
25 # user
26 class User(Base):
27     __tablename__ = 'user'
28     id = Column(Integer, primary_key=True, autoincrement=True)
29     username = Column(String(50), nullable=False)
30
31     # articles = relationship("Article")
32
33     def __repr__(self):
34         return "User <username: {}>".format(self.username)
35
36
37 # article
38 class Article(Base):
39     __tablename__ = 'article'
40     id = Column(Integer, primary_key=True,autoincrement=True)
41     title = Column(String(50), nullable=False)
42     conent = Column(Text, nullable=False)
43     uid = Column(Integer, ForeignKey("user.id", ondelete="RESTRICT"))
44
45     # relation 正向引用, backref反向引用
46     author = relationship("User", backref='articles')
47
48     def __repr__(self):
49         return "Article <title: {}>".format(self.title)
50 # Base.metadata.drop_all()
51 # Base.metadata.create_all()
52 #
53 # user = User(username='saber')
54 # session.add(user)
55 # session.commit()
56 #
57 # article = Article(title='abd', conent='123', uid=1)
58 # session.add(article)
59 # session.commit()
60
61 article = session.query(Article).first()
62 uid = article.uid
63 user = session.query(User).get(uid)
64 print article
65 print uid
66 print user
67
68 print "-"*20
69 article = session.query(Article).first()
70 print article.author.username
71
72 print '-'*20
73 user = session.query(User).first()
74 print user.articles

转载于:https://www.cnblogs.com/chen0427/p/8666861.html

【Flask】ORM关系以及一对多相关推荐

  1. php hasmany,浅谈laravel orm 中的一对多关系 hasMany

    个人对于laravel orm 中对于一对多关系的理解 文章表 article,文章自然可以评论,表 comment 记录文章的评论,文章和评论的关系就是一对多,一篇文章可以有多个评论. 在 comm ...

  2. flask orm 数据库_Flask:使用ORM框架操作数据库

    在Flask中并没有限制我们使用哪种方式来操作数据库,如果使用原生SQL的方式来操作数据库,随着项目代码量的提升会发现有大量操作数据库的冗余代码,以及大量SQL语句与逻辑代码杂糅在一起不利于核心代码的 ...

  3. Mybatis xml中配置一对一关系association一对多关系collection

    Mybatis xml中配置一对一关系association&一对多关系collection 今天在配置一对一关系映射以及一对多关系映射的时候,把collection中应该使用的ofType配 ...

  4. Python进阶----表与表之间的关系(一对一,一对多,多对多),增删改查操作

    Python进阶----表与表之间的关系(一对一,一对多,多对多),增删改查操作,单表查询,多表查询 一丶表与表之间的关系 背景: ​ ​ ​  ​ ​ 由于如果只使用一张表存储所有的数据,就会操作数 ...

  5. 即时通讯数据库好友关系(一对多)应该怎样设计?

    即时通讯数据库好友关系(一对多)应该怎样设计? 问1: 比如一个帐户的号码,年龄,性别,说明等用一张表完全可以容纳下了,但每个帐户有很多的好友,好友放这张表里不太好办吧? 是不是要为每一个帐户新建一张 ...

  6. ORM操作models一对多、多对多关系

    ORM操作 单表.一对多表操作 1 from django.db import models 2 3 4 class UserGroup(models.Model): 5 title = models ...

  7. flask 定义数据库关系(一对多) --

    定义关系 在关系型数据库中,我们可以通过关系让不同表之间的字段建立联系.一般来说,定义关系需要两步,分别是创建外键和定义关系属性.在更复杂的多对多关系中,我们还需要定义关联表来管理关系.下面我们学习用 ...

  8. 【Flask】ORM 关系一对一

    ### 一对一的关系: 在sqlalchemy中,如果想要将两个模型映射成一对一的关系,那么应该在父模型中,指定引用的时候,要传递一个`uselist=False`这个参数进去.就是告诉父模型,以后引 ...

  9. Django:ORM关系字段

    一,ForeignKey 外键类型在ORM中用来表示外键关联关系,一般把ForeignKey字段设置在 '一对多'中'多'的一方. ForeignKey可以和其他表做关联关系同时也可以和自身做关联关系 ...

最新文章

  1. Python模块-创建和执行程序(或者脚本)
  2. Zip文件中文乱码问题解决方法(MAC->Windows)
  3. windows7下载python教程-Windows 7下Python Web环境搭建图文教程
  4. 浅谈面向对象的javascript几个特性
  5. 手工编程是指利用计算机完成,西安交通大学17年3月课程考试《CAD CAM》作业考核试题...
  6. 获取ajax传过来的数据_大数据编辑问题
  7. 复练--软考高级-综合布线部分
  8. mysql function_MySQL基础函数——数学函数详解
  9. 微课|中学生可以这样学Python(5.6.1节):列表推导式3
  10. 从汇编的眼光看C++(之delete内存泄露)
  11. 2013 Multi-University Training Contest 4 部分解题报告
  12. Ubuntu之解决需权限才能访问串口的方法
  13. BCH恢复禁用的脚本操作码[草案]
  14. 因子分析 factor analysis (一 ):模型的理论推导
  15. 有限元基础及ANSYS应用 - 第9节 - 1 平面应力问题的ANSYS分析
  16. Android studio Gradle:Executing tasks - 一直卡在Gradle:Build Running
  17. Ubuntu系统直接拷贝硬盘克隆
  18. 计算任意2个日期内的工作日(没有考虑到国定假日
  19. 嘎嘎android模拟器,Ladygaga模拟器
  20. 大数据Spark实战第七集 机器学习和数据处理

热门文章

  1. 【java笔记】包装类
  2. 【动态规划】P4170 :涂色(区间dp)
  3. python中唯一的映射类型是什么_Python基础类型之字典(dict)
  4. sql 纵向求和_sql 行列转换 求和平均值等
  5. tbopen链接生成工具_筛选了100个配色工具后,我挑出了这25个
  6. tcga数据下载_手把手教你用R下载TCGA数据:CGDSR包
  7. php文本框清除格式,php如何清除HTML格式
  8. 最长回文子序列与最长回文子串
  9. java关键字值transient
  10. echart高级使用_echarts高级入坑