Python ORM模型与数据库表的区别
我正在学习关于数据库(Postgres)和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
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。至少在博士后,它是这样工作的