相关疑难解决方法(0)

SQLite - 如何连接来自不同数据库的表?

我有一个使用SQLite数据库的应用程序,一切都按照应有的方式工作.我现在正在添加需要第二个SQLite数据库的新功能,但我很难弄清楚如何从不同的数据库连接表.

如果有人可以帮我解决这个问题,我真的很感激!

编辑:请参阅此问题以获取示例案例,您可以在附加数据库时调整您的语言,如接受的答案中所述.

sql database sqlite join

93
推荐指数
2
解决办法
6万
查看次数

如何解决Django中跨数据库的外键缺乏支持

我知道Django不支持跨多个数据库的外键(最初是Django 1.3 docs)

但我正在寻找一种解决方法.

什么行不通

我在一个单独的数据库上有两个模型.

routers.py:

class NewsRouter(object):
    def db_for_read(self, model, **hints):
        if model._meta.app_label == 'news_app':
            return 'news_db'
        return None

    def db_for_write(self, model, **hints):
        if model._meta.app_label == 'news_app':
            return 'news_db'
        return None

    def allow_relation(self, obj1, obj2, **hints):
        if obj1._meta.app_label == 'news_app' or obj2._meta.app_label == 'news_app':
            return True
        return None

    def allow_syncdb(self, db, model):
        if db == 'news_db':
            return model._meta.app_label == 'news_app'
        elif model._meta.app_label == 'news_app':
            return False
        return None
Run Code Online (Sandbox Code Playgroud)

fruit_app/models.py中的模型1:

from django.db import models

class Fruit(models.Model):
    name …
Run Code Online (Sandbox Code Playgroud)

django django-models django-orm

76
推荐指数
1
解决办法
6794
查看次数

MySQL InnoDB是不同数据库之间的外键

我想知道,如果它是用在InnoDB中可能MySQL有一个table外键引用在不同的另一个表database

如果是这样,如何做到这一点?

mysql database innodb foreign-keys

61
推荐指数
3
解决办法
3万
查看次数

如何在Django中使用模式?

我想在django中使用postgreSQL模式,我该怎么做?

python django postgresql django-models

27
推荐指数
6
解决办法
3万
查看次数

如何在不同的DB中使用带有外键的django模型?

我有两个不同数据库的2个模型:
数据库是手动创建的,但它不会改变任何东西.

class LinkModel(models.Model): # in 'urls' database
    id = models.AutoField(primary_key=True)
    host_id = models.IntegerField()
    path = models.CharField(max_length=255)

    class Meta:
        db_table = 'links'
        app_label = 'testapp'

    def __unicode__(self):
        return self.path

class NewsModel(models.Model):  # in default database
    id = models.AutoField(primary_key=True)
    title = models.CharField(max_length=50)
    link = models.ForeignKey(LinkModel)

    class Meta:
        db_table = 'news'
        app_label = 'test'

    def __unicode__(self):
        return self.title
Run Code Online (Sandbox Code Playgroud)

在以下代码之后出现错误

newsItem, created = NewsModel.objects.get_or_create( title="test" )
link = LinkModel.objects.using('urls').get( id=1 )
newsItem.link = link  # error!

 Cannot assign "<LinkModel: />": instance is on …
Run Code Online (Sandbox Code Playgroud)

mysql django foreign-keys django-models

18
推荐指数
2
解决办法
1万
查看次数

在Django中指定PostgreSQL Schema

我正在尝试使用Django构建一些数据库前端,因为我喜欢一般的MVC结构以及他们的模板系统和管理界面.但是,我在使用PostgreSQL后端的某些方面遇到了问题.

我已经设法弄清楚如何使用settings.py文件的数据库部分指定不同的模式(和数据库),如下所示:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    },
    'MPS': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'OPTIONS': {
            'options': '-c search_path=django'
        },
       'NAME': 'sandbox_manzer',
       'HOST': '192.168.2.151',
       'PORT': '5434',
       'USER': '******',
       'PASSWORD': '**********************',
    }
}
Run Code Online (Sandbox Code Playgroud)

然而,当我尝试和脚本一些基本的测试,详见这里,我遇到一个问题.我的用户可以很好地创建数据库,以便我的test_db构建,但是当django应用程序将模型构建到表中时,我得到一个错误,指出No schema is specifiedtest_db.我将非常感谢有关如何为test_db指定模式名称的任何帮助.特别是因为我打算使用不同的模式作为逻辑分隔符为单个项目构建多个应用程序.

谢谢!

django postgresql

9
推荐指数
1
解决办法
4583
查看次数

django 具有多个数据库和用户外键

假设我的服务器上有一个 django 应用程序,但我希望使用 django.contrib.auth.models 进行身份验证,其中用户和组模型/数据位于另一个数据库中的另一台服务器上。在 Django 中,我的数据库设置将是这样的:

DATABASES = {
    'default': {},
    'auth_db': {
        'NAME'      : 'my_auth_db',
        'ENGINE'    : 'django.db.backends.mysql',
        'USER'      : 'someuser',
        'PASSWORD'  : 'somepassword',
        'HOST'      : 'some.host.com',
        'PORT'      : '3306',
    },
    'myapp': {
        'NAME': 'myapp_db',
        'ENGINE': 'django.db.backends.mysql',
        'USER': 'localuser',
        'PASSWORD': 'localpass',
    }
}

DATABASE_ROUTERS = ['pathto.dbrouters.AuthRouter', 'pathto.dbrouters.MyAppRouter']
Run Code Online (Sandbox Code Playgroud)

第一个问题:这是否有效,即它是否允许我使用存储在远程数据库“my_auth_db”中的用户登录到我的 Django 应用程序?

假设上述答案是肯定的,如果在我的本地数据库(应用程序“myapp”)中我的模型具有针对用户的外键,会发生什么情况?换句话说,我的模型 SomeModel 是在 myapp 中定义的,并且应该存在于 myapp_db 中,但它在 my_auth_db 中具有指向用户的外键:

class SomeModel(models.model):
    user = models.ForeignKey(User, unique=False, null=False)
    description = models.CharField(max_length=255, null=True)
    dummy = models.CharField(max_length=32, null=True)
    etc.
Run Code Online (Sandbox Code Playgroud)

第二个问题:这可能吗?或者一个数据库表根本不可能拥有另一个数据库中的表的外键?

如果我真的想完成这项工作,我可以将ForeignKey字段“user”替换为IntegerField“user_id”,然后如果我需要somemodel.user,我会改为获取somemodel.user_id并使用models.User.objects.get(pk =somemodel.user_id),路由器知道在哪里查询用户的 …

python django django-models multiple-databases django-database

3
推荐指数
1
解决办法
4560
查看次数