将Django模型连接到具有相同结构的不同表名

时间:2019-04-07 07:47:41

标签: python django

我有一个数据库,可以从股票市场导入数据。这些都是相同的表,只是日期不同。如何将django模型与动态表名连接起来?

2 个答案:

答案 0 :(得分:1)

您可以在模型db_table中使用Meta选项来指定不同的表名。

class YourModel(models.Model):
    ...

    class Meta:
        db_table = 'YOUR_TABLE_NAME'

仅当您的表与Django设置中的默认数据库位于同一数据库中时,此方法才有效。但是,如果该数据库与默认数据库不同,则必须以其他名称在DATABASES配置中添加该数据库,并制作自己的数据库路由器以进行适当的路由。

settings.py

DATABASES = {
    ...
    'other': {
        'NAME': 'primary',
        'ENGINE': 'django.db.backends.mysql',
        'USER': 'mysql_user',
        'PASSWORD': 'spam',
    }, 

}
DATABASE_ROUTERS = ['path.to.YourRouter']

routers.py (创建)

class YourRouter:
    def db_for_read(self, model, **hints):
        if model._meta.model_name == 'yourmodel':
            return 'other'
        return None

    def db_for_write(self, model, **hints):
        if model._meta.model_name == 'yourmodel':
            return 'other'
        return None

    def allow_relation(self, obj1, obj2, **hints):
        return False

    def allow_migrate(self, db, app_label, model_name=None, **hints):
        return False

答案 1 :(得分:0)

#!/usr/bin/env bash

# Cancel Program
exit_program(){
    echo "Here is the PID: $$"
    exit
}

# Reciever
trap "exit_program" SIGUSR1

我认为,它会起作用,但会在关系上造成一些麻烦