Django 项目搭建教程

编辑器推荐pycharm,有python开发环境,django版本2.0python版本3.0python

1:启动一个项目,以下图点击file选择new,点击django的写入项目名称便可mysql

2:刚创建好的项目的初始化以下图sql

3:咱们能够初始化一个app,python manage.py startapp pools,咱们能够看到已经生产一个app poolsshell

4: 根据开发的习惯咱们喜欢app放在同一个文件夹下面 方便后期引入使用和修改,因此咱们建立一个apps文件夹来保存咱们的应用,目录以下图数据库

这样把pools移动到apps里面去,而且把apps.pools添加到settingsdjango

5:来配置咱们的数据库,mysql为例子,首先安装pymysql  pip install pymysql(这个地方插一句,自动安装的pip 可能不是很好用建议你们网上搜索get-pip.py  经过python get-pip.py来安装pip)oracle

安装完pymysql 以后,再settings.py 里面引入app

引入之后就能够定义咱们的数据库了,一样的出于开发debug方便和后期再settings里面的引入文件过多咱们须要建一个conf文件下面来存储咱们每一个须要引入模块的配置这个conf和settings是同级的,此处不上图了比较简单,直接看mysql配置编辑器

DATABASES = {
    'default': { #默认配置数据库名字,多数据时能够修改
        'ENGINE': 'django.db.backends.mysql',
        'NAME': '***', #数据库名
        'USER':'***', #数据库用户名
        'PASSWORD':'***',#数据库密码
        'HOST': '***',#主机名
        'PORT':***,#端口
        'CONN_MAX_AGE': None,
        'OPTIONS':{'init_command' : "SET sql_mode='STRICT_TRANS_TABLES'",
        },
        'TEST': {
            'CHARSET': 'utf8',
            'COLLATION': 'utf8_general_ci',
        }
    }
}

若是链接的事oracle的数据库,把ENGINE的字段改为spa

django.db.backends.oracle

若是一个项目中须要链接多个数据库,链接名字不能都用默认名字须要不一样的名字区别

DATABASES = {
    'mysqlname': { #默认配置数据库名字,多数据时能够修改
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'test', #数据库名
        'USER':'***', #数据库用户名
        'PASSWORD':'***',#数据库密码
        'HOST': '***',#主机名
        'PORT':****#端口
    },
     'oraclename': { #默认配置数据库名字,多数据时能够修改
        'ENGINE': 'django.db.backends.oracle',
        'NAME': '***', #数据库名
        'USER':'***', #数据库用户名
        'PASSWORD':'***',#数据库密码
        'HOST': '***',#主机名
        'PORT':***,#端口
    },
}

对于多个数据库映射model的问题对应的

class WebCheckKeyWordGroup(models.Model):
    class Meta:
        db_table = "***"
        app_label = 'oracle'

    name = models.CharField(max_length=255, null=False, default="", verbose_name="组名")

以上咱们在class Meta里面添加了app_label

编写本身的数据库路由,根据app_label 指向哪个数据库

class AuthRouter:
    """
    A router to control all database operations on models in the
    auth application.
    """
    def db_for_read(self, model, **hints):
        """
        Attempts to read auth models go to auth_db.
        """
        if model._meta.app_label == 'oracle':
            return 'oraclename'
        return 'default'

    def db_for_write(self, model, **hints):
        """
        Attempts to write auth models go to auth_db.
        """
        if model._meta.app_label == 'oracle':
            return 'oraclename'
        return 'default'

    def allow_relation(self, obj1, obj2, **hints):
        """
        Allow relations if a model in the auth app is involved.
        """
        if obj1._meta.app_label == 'oracle':
           return 'oraclename'
        return 'default'

    def allow_migrate(self, db, app_label, model_name=None, **hints):
        """
        Make sure the auth app only appears in the 'auth_db'
        database.
        """
        if app_label == 'oracle':
            return db == 'oraclename'
        return 'default'

而后把咱们写的路由添加到settings里面就ok

DATABASE_ROUTERS = ['path.to.AuthRouter']

以上配置完咱们的mysql,如何查看咱们的配置没有问题,打开terminal 运行python manage.py shell

若是没有出现报错,就是没有问题的

以上是咱们数据库的基础配置有问题可私信,你们共同进步

相关文章
相关标签/搜索