欢迎访问宙启技术站
智能推送

SQLAlchemy.schema中如何定义默认值

发布时间:2023-12-17 17:23:07

SQLAlchemy的schema模块提供了多种用于定义表的结构和属性的类和方法。在这些类和方法中,可以使用default参数来定义默认值。

下面是一些常用的类和方法来定义默认值的例子:

1. Column类的default参数:

from sqlalchemy import Column, Integer

class MyTable(Base):
    __tablename__ = 'my_table'
    
    id = Column(Integer, primary_key=True)
    count = Column(Integer, default=0)

在这个例子中,count列的默认值被设置为0。当向MyTable表插入新行时,如果没有给count赋值,那么它的值将自动变为0。

2. Column类的server_default参数:

from sqlalchemy import Column, Integer

class MyTable(Base):
    __tablename__ = 'my_table'
    
    id = Column(Integer, primary_key=True)
    count = Column(Integer, server_default='0')

在这个例子中,count列的默认值被设置为字符串'0'。server_default参数用于定义数据库服务器端的默认值,这意味着在插入新行时,数据库服务器将自动为count列赋值为'0'。

3. func模块中的默认值函数:

from sqlalchemy import Column, Integer, func

class MyTable(Base):
    __tablename__ = 'my_table'
    
    id = Column(Integer, primary_key=True)
    created_at = Column(DateTime, default=func.now())

在这个例子中,created_at列的默认值是一个函数调用func.now()func.now()返回当前的时间戳,这意味着在插入新行时,created_at列将自动填充为当前的时间。

4. 类级别的默认值:

from sqlalchemy import Column, Integer
from sqlalchemy.ext.declarative import declarative_base

Base = declarative_base()

class MyTable(Base):
    __tablename__ = 'my_table'
    
    id = Column(Integer, primary_key=True)
    count = Column(Integer)
    
    def __init__(self):
        self.count = 0

在这个例子中,MyTable类的构造函数中将count属性的默认值设置为0。这意味着当使用MyTable()创建新的对象时,count属性将自动被赋值为0。

总的来说,SQLAlchemy的schema模块中,可以使用default参数、server_default参数、函数调用等方式来定义默认值。这些默认值可以在创建表结构时自动应用,也可以在插入新行时自动赋值。使用这些默认值,可以简化代码,提高开发效率。