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参数、函数调用等方式来定义默认值。这些默认值可以在创建表结构时自动应用,也可以在插入新行时自动赋值。使用这些默认值,可以简化代码,提高开发效率。
