odoo 創建初始數據庫 切換當前數據庫


from odoo import models, fields, api, sql_db, tools
from contextlib import closing
from odoo.exceptions import ValidationError
from odoo.service.db import _initialize_db


def change_current_database(to_database_name):
    """
    切換當前數據庫
    :param to_database_name: 目標數據庫
    :return:
    """
    tools.config['db_name'] = to_database_name


def create_empty_database(database_name):
    """
    根據database_name 創建空數據庫, 參考函數odoo.service.db._create_empty_database
    :param database_name: 創建空數據庫名
    :return:
    """
    db = sql_db.db_connect('postgres')
    with closing(db.cursor()) as cr:
        chosen_template = tools.config['db_template']
        cr.execute("SELECT datname FROM pg_database WHERE datname = %s",
                   (database_name,), log_exceptions=False)
        if cr.fetchall():
            return False
        else:
            cr.autocommit(True)  # avoid transaction block
            collate = "LC_COLLATE 'C'" if chosen_template == 'template0' else ""
            cr.execute(
                """CREATE DATABASE "%s" ENCODING 'unicode' %s TEMPLATE "%s" """ %
                (database_name, collate, chosen_template)
            )
            return True


def create_odoo_database(database_name):
    """
    創建有odoo初始數據的數據庫
    :param database_name:
    :return:
    """
    if create_empty_database(database_name):
        _initialize_db(
            id,
            db_name=database_name,
            demo=False,
            lang=None,
            user_password='admin',
            login='admin',
            country_code=None,
            phone=None
        )
    else:
        return False


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM