Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python ORM模型与数据库表的区别_Python_Sql_Sqlalchemy - Fatal编程技术网

Python ORM模型与数据库表的区别

Python ORM模型与数据库表的区别,python,sql,sqlalchemy,Python,Sql,Sqlalchemy,我正在学习关于数据库(Postgres)和ORM的知识,并被它所阻止 在数据库中,我有这样的东西 CREATE TABLE public.city ( city_id serial PRIMARY KEY, city_name varchar(50) UNIQUE NOT NULL, region_id integer NOT NULL REFERENCES public.region ON DELETE CASCADE ); 在我的烧瓶应用程序(python

我正在学习关于数据库(Postgres)和ORM的知识,并被它所阻止

在数据库中,我有这样的东西

CREATE TABLE public.city (
    city_id    serial PRIMARY KEY,
    city_name  varchar(50) UNIQUE NOT NULL,
    region_id  integer NOT NULL REFERENCES public.region ON DELETE CASCADE
);
在我的烧瓶应用程序(python、烧瓶微框架和烧瓶SqlAlchemy)模型定义中,我有:

class City(Base):
    city_id = db.Column(db.Integer, primary_key=True)
    city_name = db.Column(
        db.String(50),
        unique=True,
        nullable=False)
    region_id = db.Column(
        db.Integer,
        db.ForeignKey(
            'region.region_id',
            ondelete="CASCADE"),
        nullable=False)

    country = db.relationship(
        'Region',
        backref=db.backref('cities'))
我的疑问是:所有这些
都是唯一的
可以为空的
在我的python模型中是必要的吗?考虑到数据库表是从SQL脚本文件创建的,而不是由SqlAlchemy创建的


这些信息为ORM框架添加了一些有用的东西?

尝试删除它们,看看会发生什么情况如果这两个不同步,您可能会遇到很多问题。最终,如果您打算使用ORM来处理您的应用程序,您应该使用它来管理数据库。当模式与模型不匹配时,ORM会伤害您。说到你的数据模型,你认为让城市名称独一无二是个好主意吗?美国不止一个查尔斯顿,世界上不止一个古巴。如果您认为您必须具备此功能,请尝试对州和市设置复合唯一约束。@DavidButtrick数据库由另一个团队成员处理,因此我只需要连接到它并使用它,因此我对此表示怀疑。关于“复合唯一约束”,我将查看它。谢谢默认情况下,nullable为False。您需要在需要时指定nullable=True。至少在博士后,它是这样工作的