Python 可以使用列';SQLAlchemy中不同方言的服务器默认值会不同吗?

Python 可以使用列';SQLAlchemy中不同方言的服务器默认值会不同吗?,python,postgresql,sqlite,sqlalchemy,Python,Postgresql,Sqlite,Sqlalchemy,我正在使用SQLAlchemy来配置我的数据库模式,我想设置一个列,该列带有一个服务器默认值,该默认值根据数据库方言的不同而不同。一个数据库函数调用PostgreSQL,另一个调用SQLite。这能做到吗?怎么做 from sqlalchemy import Column, DateTime class CustomNow(): pass # What to do? class Timestamps(object): created = Column(DateTime

我正在使用SQLAlchemy来配置我的数据库模式,我想设置一个
,该列带有一个
服务器默认值
,该默认值根据数据库方言的不同而不同。一个数据库函数调用PostgreSQL,另一个调用SQLite。这能做到吗?怎么做

from sqlalchemy import Column, DateTime    

class CustomNow():
    pass # What to do?

class Timestamps(object):
    created = Column(DateTime, server_default=CustomNow())

使用
@compiles
decorrator,如中所述:


使用
@compiles
decorrator,如中所述:

from sqlalchemy.ext.compiler import compiles
from sqlalchemy.sql.functions import FunctionElement


class CustomNow(FunctionElement):
    name = "custom_now"


@compiles(CustomNow)
def visit_custom_now(element, compiler, **kwargs):
    return "(NOW())"


@compiles(CustomNow, "sqlite")
def visit_custom_now_for_sqlite(element, compiler, **kwargs):
    return "(DATETIME('now', 'localtime'))"