### 一对一的关系:
在sqlalchemy中,如果想要将两个模型映射成一对一的关系,那么应该在父模型中,指定引用的时候,要传递一个`uselist=False`这个参数进去。就是告诉父模型,以后引用这个从模型的时候,不再是一个列表了,而是一个对象了。示例代码如下:

 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 # UserExtent
38 class UserExtend(Base):
39     __tablename__ = 'userextend'
40     id = Column(Integer, primary_key=True, autoincrement=True)
41     school = Column(String(50))
42     uid = Column(Integer, ForeignKey("user.id"))
43
44     user = relationship("User", backref=backref("extend", uselist=False))
45
46
47 # article
48 class Article(Base):
49     __tablename__ = 'article'
50     id = Column(Integer, primary_key=True, autoincrement=True)
51     title = Column(String(50), nullable=False)
52     conent = Column(Text, nullable=False)
53     uid = Column(Integer, ForeignKey("user.id", ondelete="RESTRICT"))
54
55     # relation 正向引用, backref反向引用
56     author = relationship("User", backref='articles')
57
58     def __repr__(self):
59         return "Article <title: {}>".format(self.title)
60
61
62 Base.metadata.drop_all()
63 Base.metadata.create_all()
64
65 # 一对多
66 user = User(username='saber')
67 # article1 = Article(title='title1', conent='content1')
68 # article2 = Article(title='title2', conent='content2')
69 # user.articles.append(article1)
70 # user.articles.append(article2)
71 #
72 # session.add(user)
73 # session.commit()
74 print '-' * 20
75
76 # 一对一, 多对一
77 extend1 = UserExtend(school='tinghua')
78 user.extend = extend1
79 session.add(user)
80 session.commit()

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

【Flask】ORM 关系一对一相关推荐

  1. 【Flask】ORM关系以及一对多

    ### ORM关系以及一对多: mysql级别的外键,还不够ORM,必须拿到一个表的外键,然后通过这个外键再去另外一张表中查找,这样太麻烦了.SQLAlchemy提供了一个`relationship` ...

  2. Django04-2: ORM关系表\字段补充

    一.表与表关系 一对多 多对多 一对一 图书表 出版社 作者表 作者详情表 出版社 和 图书表 关系 一对多 外键字段在多的一方 book 图书表 和 作者表 关系 多对多 需要创建第三张表 作者表 ...

  3. Django模型中的关系:一对一、一对多与多对多

    Django模型中的关系:一对一.一对多与多对多 数据库中的表存在关联关系,Django中的模型对应数据库中的表,因此Django中的模型也存在一对一.一对多与多对多这三种关系. 1 . 一对一关系 ...

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

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

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

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

  6. Django:ORM关系字段

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

  7. Flask ORM SQLAlchemy数据操作完整案例

    ORM ORM 全拼Object-Relation Mapping. 中文意为 对象-关系映射. 主要实现模型对象到关系数据库数据的映射. 比如:把数据库表中每条记录映射为一个模型对象 优点 只需要面 ...

  8. ORM 关系对象映射 基础知识点

    优点:1.ORM使我们通用的数据库变得更加的简单便捷.2.可避免新手程序员写sql语句带来的性能问题. 1. 创建单表2. 创建关键表 1). 一对一2). 一对多3). 多对多 创建表的语句: py ...

  9. python django框架orm_Python全栈 Web(Django框架、后台管理,ORM关系)

    F查询和Q查询: F() 在之执行中获取某字段的值 F("字段名") 将所有人的年龄加10 form django.db.models import F Author.object ...

最新文章

  1. 简单的TableViewCell高度自适应(只有Label,仅当参考思路)
  2. requirejs模块化html,requirejs模块化-入门
  3. php 怎么写原生sql,thinkphp 原生sql 怎么写?
  4. 计算机课实验三,成都信息工程学院计算机网络课程实验三
  5. python全栈计划_Python 全栈学习视频教程,包含了从 0-99天的全栈学习计划,估计可以学习 1024 小时。...
  6. mysql查询结果更新到新表_MySQL查询结果复制到新表的方法(更新、插入)
  7. MySQL之 XtraBackup 备份
  8. STM32零碎问题记录
  9. Kafka 可视化工具kafkatool简单使用入门
  10. 无监督特征选择算法综述
  11. 传智播客大型人才招聘会成功举行
  12. 配置switchOmegaProxy插件
  13. 应聘总经理的答卷,供大家打分
  14. SpringBoot GA/PRE/SNAPSHOT含义
  15. python求一元三次方程的根_方程的计算机处理924_Fortran
  16. 关于一斤酒到底有几两的说明
  17. android 短信打开APP
  18. 如何将Excel中画好的图导入Word
  19. ASTER GDEM v3.0高程数据批量下载
  20. [导入]心若一动 泪就一行(转)

热门文章

  1. 奔跑中的2015--成长之路
  2. SqlServer 对 数据类型 text 的操作
  3. 网络拓扑Visio式的定制
  4. 生活不可缺的46个搜索引擎
  5. 问题 F: Search Problem (III)
  6. Linux安装Typora
  7. vscode python debug venv_Visual Studio Code Python开发调试环境设置
  8. 怎么一秒钟给微信头像戴上圣诞帽,我教你啊
  9. 测试用例集-11.QQ表情收藏功能测试用例
  10. 大连市打造数字人民币应用示范村