在Django数据库中,用户名用作模式名称。
在DB2中没有数据库级用户。 OS用户将用于登录数据库。
在我的数据库中,我有两个不同的数据库用户和数据库模式名称 所以在使用db2作为后端的django中,如何使用不同的模式名来访问表?
编辑: 澄清我试图通过ORM而不是原始SQL进行访问。 ORM隐式使用用户名作为模式名称。我该如何避免?
答案 0 :(得分:0)
DB2使用所谓的两个部分名称schemaname.objectname
。每个对象(包括表)都可以通过整个名称引用。在会话中,存在当前模式,默认情况下将其设置为用户名。它可以通过SET SCHEMA myschema
语句进行更改。
对于您的问题,有两种选择:
1)引用表格的全名:schemaname.tablename
2)使用set schema
设置公共schemaname并仅引用表格。
答案 1 :(得分:0)
得到了解决方案:
1)我们可以使用以下查询来更改db2中的模式:
set schema schema_name;
2)我们可以在django startup上执行上面的查询。 我们必须在任何urls.py,manage.py文件中添加以下代码,这些文件将在启动时运行。
def set_schema(sender, **kwargs):
from django.db import connection
cursor = connection.cursor()
try:
cursor.execute("set schema schema_name")
except Exception as e:
print str(e)
from django.db.backends.signals import connection_created
connection_created.connect(set_schema)