首页 > 解决方案 > 为每个客户端分离 PostgreSQL 数据库,在单个 Django 应用程序和同一服务器上创建客户端时自动迁移

问题描述

client_obj = Client.objects.create(name='client1')

status = create_database('client1')

def create_database('client1'):
    con = None
    dbname = 'client1'
    con = connect(dbname='postgres', user='***', host = 
    'localhost', password='***')
    con.set_isolation_level(ISOLATION_LEVEL_AUTOCOMMIT)
    cur = con.cursor()
    cur.execute("SELECT 1 FROM pg_catalog.pg_database WHERE 
    datname = '{}' ".format(dbname))

    exists = cur.fetchone()
    if not exists:
        cur.execute('CREATE DATABASE ' + dbname)
        print "DATABASE NOT EXISTS"
    else:
        print "DATABASE EXISTS"

 cur.close()
 con.close()

创建数据库后如何使迁移自动化?还是有另一种方法可以做到这一点?

标签: pythondjangopostgresql

解决方案


而不是使用:

cur.execute('CREATE DATABASE ' + dbname)

我创建了一个带有初始迁移的空数据库,并每次使用以下命令复制它:

cur.execute('CREATE DATABASE {} WITH TEMPLATE created_db'.format(dbname))

现在不需要动态迁移到新创建的数据库。


推荐阅读