为了账号安全,请及时绑定邮箱和手机立即绑定

SQLAlchemy“默认”与“server_default”性能

SQLAlchemy“默认”与“server_default”性能

炎炎设计 2021-06-10 18:31:35
在将 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?
查看完整描述

2 回答

  • 2 回答
  • 0 关注
  • 213 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信