Python 可以使用列';SQLAlchemy中不同方言的服务器默认值会不同吗?
我正在使用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
列
,该列带有一个服务器默认值
,该默认值根据数据库方言的不同而不同。一个数据库函数调用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'))"