SQLAlchemy外键的使用

Posted 潇潇、寒

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQLAlchemy外键的使用相关的知识,希望对你有一定的参考价值。

orm可以将数据库存储的数据封装成对象,同时,如果封装的好的话,所有的数据库操作都可以封装到对象中。这样的代码在组织结构上会非常的清晰,并且相对与使用sql语句在sql注入方面会极具降低。

SQLAlchemy中的映射关系有四种,分别是一对多,多对一,一对一,多对多

实现这种映射关系只需要外键(ForeignKey),和relationship

 

一对多:

from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column, Integer, CHAR
from sqlalchemy import ForeignKey
from sqlalchemy.orm import relationship, backref

Base = declarative_base()

class Parent(Base):
    __table__ = "parent"
    id = Column(Integer, Primary_key=True)
    name = Column(CHAR(50))
    child = relationship("child", backref="parent")

class Child(Base):
    __table__ = "child"
    id = Column(Integer, Primary_key=True)
    name = Column(CHAR(50))
    parent_id = Column(Integer,ForeignKey(‘parent.id‘))

 

多对一:(建议)

from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column, Integer, CHAR
from sqlalchemy import ForeignKey
from sqlalchemy.orm import relationship, backref

Base = declarative_base()

class Parent(Base):
    __table__ = "parent"
    id = Column(Integer, Primary_key=True)
    name = Column(CHAR(50))

class Child(Base):
    __table__ = "child"
    id = Column(Integer, Primary_key=True)
    name = Column(CHAR(50))
    parent_id = Column(Integer,ForeignKey(‘parent.id‘))
    parent = relationship("parent", backref="child")

 

 

以上是关于SQLAlchemy外键的使用的主要内容,如果未能解决你的问题,请参考以下文章

尝试添加外键的 SQLAlchemy 错误

如何使用 Flask-SQLAlchemy 使用 csv 填充具有外键的模型?

sqlalchemy外键的一些东西

来自唯一和主外键的 SQLAlchemy 主键

SQLAlchemy(三):外键连表关系

sqlalchemy中复合外键的多个关系