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

若是沒有出現報錯,就是沒有問題的

以上是咱們數據庫的基礎配置有問題可私信,你們共同進步

相關文章
相關標籤/搜索