python - 为每个客户端分离 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()
创建数据库后如何使迁移自动化?还是有另一种方法可以做到这一点?
解决方案
而不是使用:
cur.execute('CREATE DATABASE ' + dbname)
我创建了一个带有初始迁移的空数据库,并每次使用以下命令复制它:
cur.execute('CREATE DATABASE {} WITH TEMPLATE created_db'.format(dbname))
现在不需要动态迁移到新创建的数据库。
推荐阅读
- android - 单击按钮执行双击
- reactjs - 如何在 React with Typescript 中处理 HOC 注入的 props?
- asp.net-identity - .net core 2.0 中使用 Identity 的角色授权抛出 404
- php - 使用 foreach 和 for 循环过滤数组
- r - 通过循环命名变量 R
- android - 抽屉图标颜色
- jsf - selectOneMenu 两次调用 value setter
- c# - Linq 更新加入
- javascript - 使用脚本关闭 hta 文件
- python - 为什么 Python 的 Event.wait() 会被某些系统上的信号打断,而其他系统上却不能?