簡體   English   中英

對於SQLAlchemy中的不同方言,列的server_defaults是否可以不同?

[英]Can a column's server_defaults be different for different dialects in SQLAlchemy?

我正在使用SQLAlchemy來配置數據庫模式,並且我想設置一個server_default Column ,具體取決於數據庫的方言。 一個數據庫函數調用PostgreSQL,另一個函數調用SQLite。 能做到嗎? 怎么樣?

from sqlalchemy import Column, DateTime    

class CustomNow():
    pass # What to do?

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

使用@compiles decorartor,如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'))"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM