sách gpt4 ăn đã đi

python - 如何在 sqlalchemy 中提交之前应用列默认值

In lại Tác giả: IT Lão Cao 更新时间:2023-10-28 21:01:47 25 4
mua khóa gpt4 giày nike

我有一个基于声明的模型:

class User(Base):
id = Column(Integer, primary_key=True)
money = Column(Integer, default=100)

然后我跑

>>> u = User()
>>> u.money
Không có

如何使用 sqlalchemy 填充默认值而不向数据库写入任何内容?

câu trả lời hay nhất

该列默认值仅适用于 INSERT 和 UPDATE 语句,因此在您 .flush() session 之前不会被应用。

要在刷新之前在新实例上看到相同的值,您需要在创建新实例时应用默认值;在 Người sử dụng 对象的 __nóng__ 方法中:

class User(Base):
__tablename__ = 'users'

def __init__(bản thân, **kwargs):
if 'money' not in kwargs:
kwargs['money'] = self.__table__.c.money.default.arg
super(User, self).__init__(**kwargs)

id = Column(Integer, primary_key=True)
money = Column(Integer, default=100)

如果没有设置 money 属性,我们直接根据为该列配置的默认值添加一个。

请注意,默认值是 SQL 表达式,而不是 Python 值,因此您可能必须先将它们映射到 Python 对象。例如, bool 字段将具有默认的 'false' hoặc 'ĐÚNG VẬY' 字符串值,而不是 SAI hoặc ĐÚNG VẬY Python bool 对象。

关于python - 如何在 sqlalchemy 中提交之前应用列默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13791487/

25 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress