我正在使用Flask创建一个动态网站.我可以为模型的id字段设置一个默认值,以便使用uuid值自动填充它吗?

class User(db.Model, UserMixin):
    id = db.Column(db.String(36), primary_key=True)
    email = db.Column(db.String(150), unique=True, nullable=False)
    password = db.Column(db.String(255), nullable=False)
    first_name = db.Column(db.String(150), nullable=False)
    last_name = db.Column(db.String(150), nullable=False)
    image_file = db.Column(db.String(60), nullable=False, default='default.jpg')
    created_at = db.Column(db.DateTime(timezone=True), server_default=func.now(), nullable=False)
    updated_at = db.Column(db.DateTime(timezone=True), server_default=func.now(), onupdate=func.now(), nullable=False)

上面给出的是我的用户模型,我将id字段设置为字符串字段,而不是默认的整数字段.我可以在这个id字段中添加一个uuid值作为默认值吗?

我try 给id字段的server_default arg作为uuuid4值. id = db.Column(db.String(36), primary_key=True, server_default=str(uuid.uuid4()))

但是上面的代码为整个列设置了一个uuid值.MySQL数据库中id字段的属性显示以下值:

# Field, Type, Null, Key, Default, Extra
'id', 'varchar(36)', 'NO', 'PRI', 'e3c56759-cc55-46f8-b6d1-d54bd267cf4b', ''

推荐答案

你可以试试这样的东西:

class User(db.Model, UserMixin):
    id = Column(String(36), default=lambda: str(uuid.uuid4()), unique=True)
    email = db.Column(db.String(150), unique=True, nullable=False)
    password = db.Column(db.String(255), nullable=False)
    first_name = db.Column(db.String(150), nullable=False)
    last_name = db.Column(db.String(150), nullable=False)
    image_file = db.Column(db.String(60), nullable=False, default='default.jpg')
    created_at = db.Column(db.DateTime(timezone=True), server_default=func.now(), nullable=False)
    updated_at = db.Column(db.DateTime(timezone=True), server_default=func.now(), onupdate=func.now(), nullable=False)

这里的重要部分是将lambda函数作为默认值传递,因此每次实例化模型时都会对该值进行判断.

Python相关问答推荐

使用numpy提取数据块

如何在箱形图中添加绘制线的传奇?

max_of_three使用First_select、second_select、

numpy卷积与有效

将tdqm与cx.Oracle查询集成

组/群集按字符串中的子字符串或子字符串中的字符串轮询数据框

如何设置视频语言时上传到YouTube与Python API客户端

python中字符串的条件替换

在ubuntu上安装dlib时出错

Plotly Dash Creating Interactive Graph下拉列表

如何使用使用来自其他列的值的公式更新一个rabrame列?

Pandas:填充行并删除重复项,但保留不同的值

如何在Python请求中组合多个适配器?

如何删除重复的文字翻拍?

Beautifulsoup:遍历一个列表,从a到z,并解析数据,以便将其存储在pdf中.

如果有2个或3个,则从pandas列中删除空格

有没有办法在不先将文件写入内存的情况下做到这一点?

如何编辑此代码,使其从多个EXCEL文件的特定工作表中提取数据以显示在单独的文件中

极点替换值大于组内另一个极点数据帧的最大值

在Django REST框架中定义的URL获得404分