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中,没有数据库级别的用户。操作系统用户将用于登录数据库

在我的数据库中,数据库用户和数据库模式有两个不同的名称。
因此,在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使用不同的模式?