2016-06-08 47 views
0

我正在使用SQLAlchemy配置我的数据库模式,并且我想要设置Columnserver_default根据数据库方言的不同而不同。一个数据库函数调用PostgreSQL,另一个调用SQLite。这可以做到吗?怎么样?对于SQLAlchemy中的不同方言,列的server_defaults可以不同吗?

from sqlalchemy import Column, DateTime  

class CustomNow(): 
    pass # What to do? 

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

回答

2

使用@compiles decorartor,如the docs描述:

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'))" 
相关问题