在将 SQLAlchemy 与 PostgreSQL 一起使用时,使用default而不是server_default映射表列默认值是否有性能优势(或劣势)?我的理解是default在INSERT(通常)中呈现表达式server_default并将表达式置于CREATE TABLE语句中。似乎server_default类似于直接在数据库中对默认值的典型处理,例如:CREATE TABLE example ( id serial PRIMARY KEY, updated timestamptz DEFAULT now());...但我不清楚在INSERT表创建时或通过表创建处理默认值是否更有效。如果default将下面示例中的每个参数更改为,行插入的性能是否会提高或降低server_default?from uuid import uuid4from sqlalchemy import Column, Boolean, DateTime, Integerfrom sqlalchemy.dialects.postgresql import UUIDfrom sqlalchemy.ext.declarative import declarative_basefrom sqlalchemy.sql import funcBase = declarative_base()class Item(Base): __tablename__ = 'item' id = Column(UUID(as_uuid=True), primary_key=True, default=uuid4) count = Column(Integer, nullable=False, default=0) flag = Column(Boolean, nullable=False, default=False) updated = Column(DateTime(timezone=True), nullable=False, default=func.now())注意:到目前为止,我找到的关于何时使用default而不是使用的最佳解释server_default并没有解决性能问题(请参阅 Mike Bayer 关于该主题的 SO 答案)。我对该解释的过于简化的总结是,default它比server_default...db 无法处理您需要或想要用于默认值的表达式。您不能或不想直接修改架构。...所以问题仍然是在default和之间进行选择时是否应该考虑性能server_default?
添加回答
举报
0/150
提交
取消