【发布时间】:2015-02-08 16:38:01
【问题描述】:
我正在用 python-django 编写一个多租户应用程序。
我想根据每个请求设置数据库连接。我想我可以编写一个中间件,在其中设置要用于该特定数据库的数据库。
import re
from django.db import connections
class SetTenantDatabase(object):
def process_request(self, request):
pattern = re.compile("\\b(http://|https://|www.|.com|8000|:|//)\\W\\d+", re.I)
words = request.get_host()
db_name = [pattern.sub("", words)][0].split('.')[0]
connections.databases['new-alias'] = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'store1',
'USER': 'xxx',
'PASSWORD': 'xxx',
'HOST': '127.0.0.1',
}
}
conn = connections['new-alias']
return None
但这不起作用。我应该怎么做。方法是否错误或解决方案是否可行,最后如何?
【问题讨论】:
标签: python django multi-tenant django-database