django-db2使用与数据库用户名不同的模式名称
在Django数据库中,用户名用作模式名 在DB2中,没有数据库级别的用户。操作系统用户将用于登录数据库 在我的数据库中,数据库用户和数据库模式有两个不同的名称。django-db2使用与数据库用户名不同的模式名称,django,python-2.7,django-models,db2,Django,Python 2.7,Django Models,Db2,在Django数据库中,用户名用作模式名 在DB2中,没有数据库级别的用户。操作系统用户将用于登录数据库 在我的数据库中,数据库用户和数据库模式有两个不同的名称。 因此,在django中,db2作为后端,如何使用不同的模式名访问表 编辑: 澄清我试图通过ORM而不是原始SQL进行访问。ORM隐式地使用用户名作为模式名。如何避免这种情况?DB2使用所谓的两部分名称,schemaname.objectname。每个对象(包括表)都可以被整个名称引用。在会话中,存在默认设置为用户名的当前模式。它可以通
因此,在django中,db2作为后端,如何使用不同的模式名访问表 编辑:
澄清我试图通过ORM而不是原始SQL进行访问。ORM隐式地使用用户名作为模式名。如何避免这种情况?DB2使用所谓的两部分名称,
schemaname.objectname
。每个对象(包括表)都可以被整个名称引用。在会话中,存在默认设置为用户名的当前模式。它可以通过SET SCHEMA myschema
语句进行更改
对于您的问题,有两种选择:
1) 使用全名引用表:schemaname.tablename
2) 使用
setschema
设置公共schemaname并仅引用表。DB2使用所谓的两部分名称,schemaname.objectname
。每个对象(包括表)都可以被整个名称引用。在会话中,存在默认设置为用户名的当前模式。它可以通过SET SCHEMA myschema
语句进行更改
对于您的问题,有两种选择:
1) 使用全名引用表:schemaname.tablename
2) 使用
set schema
设置公共schemaname并仅引用表。获得了解决方案:
1) 我们可以使用以下查询来更改db2中的模式:
set schema schema_name;
2) 我们可以在django启动时执行上述查询。
我们必须在任何URL.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)
找到了解决方案: 1) 我们可以使用以下查询来更改db2中的模式:
set schema schema_name;
2) 我们可以在django启动时执行上述查询。
我们必须在任何URL.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)
我应该在哪里添加“SET SCHEMA myschema”?在访问模型时,我们如何使用不同的模式名称,因为默认情况下它将用作用户名。模型名称?我还想访问默认的django表(例如用于auth的表),以便从不同于数据库用户的模式名称访问。谢谢Henrik,我们如何要求ORM使用不同的模式?我应该添加到哪里“SET SCHEMA myschema”?在访问模型时,我们如何使用不同的模式名称,因为默认情况下它将用作用户名。model_name?此外,我想访问默认的django表(例如用于身份验证的表),以便从不同于数据库用户的模式名称访问。谢谢Henrik,我们如何要求ORM使用不同的模式?