1. 程式人生 > >Django中資料庫的建立步驟(models模組的使用)

Django中資料庫的建立步驟(models模組的使用)

建立 和 配置資料庫

    1).建立資料庫 - webdb
        create database webdb default charset utf8 collate utf8_general_ci;
    2).Django的資料庫配置
        在settings.py中配置資料庫的資訊
        DATABASES = {
            'default':{
                'ENGINE':django.db.backends.sqlites,
                'NAME':os.path.join(BASE_DIR,DB.sqlite3),
            }
        }
        1.ENGINE:指定要連線的資料庫的驅動程式
            連線MYSQL的話可以取值為:
        		'django.db.backends.mysql'
        2.NAME:指定要連線到的資料庫的名稱
            連線mysql的話可以取值為:
                資料庫名
        3.USER:指定登入到資料庫管理系統的使用者名稱
            連線到mysql的話,可以為:root
        4.PASSWORD:指定登入到資料庫管理系統的密碼
        5.HOST:指定要連線到的主機地址
            如果是本機的話:127.0.0.1或localhost
        6.PORT:指定埠號
            mysql的預設為3306

示例:

		DATABASES = {
		    'default': {
		        'ENGINE': 'django.db.backends.mysql',
		        'NAME': 'webdb',
		        'USER': 'root',
		        'PASSWORD': '123456',
		        'HOST': 'localhost',
		        'PORT': 3306,
		
		    }
		}
	3).編寫models
	   在建立的app下的models中編寫(不要忘記將app新增到seeting.py中的
	   INSTALLED_APPS 中)
		1.Models的語法規範
            class ClassName(models.Model):
                屬性 = models.FIELDYPE(FIELD_OPTIONS)
                    FIELDTYPE : 欄位型別
                        CharField()        
                    FIELD_OPTIONS:欄位選項(欄位說明)
                        max_length=30
       2. 常見的欄位名和欄位選項
       
           欄位型別 FIELDTYPE
            1.BooleanField()
                程式語言中使用true 或 false 來表示該列的值
                資料庫中使用1 或0 來表示具體的值
                資料型別為:tinyint

            2.CharField()
                程式語言中使用字串來表示該列的值
                資料庫中也是字串
                資料型別為:varchar
                注意:必須要指定max_length引數值

            3.DateField()
                程式語言中使用字串或者Date型別的資料表示該值
                資料庫中使用的是時間字串
                資料型別為;date
            4.DateTimeField()
                資料型別為:datetime
            5.DecimalField()
                程式語言中使用數字(小數)來表示該列的值
                資料庫中使用小數表示
                資料型別:decimal
                money = models.DecimalField(max_digits=7,decimal_places=2)

            6.FloatField()
                程式語言中使用數字(小數)來表示該列的值
                資料庫使用小數
                資料型別:float
                
            7.IntegerField()
                資料型別:int
                
            8.EmailField()
                程式語言中使用字串來表示一段email地址
                資料庫中使用字串表示
                資料型別:varchar

            9.URLField()
                程式語言中使用字串來表示一段網址
                資料庫中使用字串表示
                資料型別:varchar

            10.ImageField()
                目的:儲存圖片的路徑
                資料型別:varchar
                image = models.ImageField(upload_to='images/')

        欄位選項:FIELD_OPTIONS
            1.default
                作用:為當前欄位指定預設值
            2.null
                作用:指定當前欄位是否為空,預設值為False,不能為空
            3.db_index
                作用:指定是否為當前指定索引
            4.db_column
                作用:指定當前屬性對映到表中的類名,如果不指定則採用屬性名稱作為類名

示例:

			# 建立一個實體類 - Publisher(出版社)
			# 1.name : 出版社名稱(varchar(30))
			# 2.address: 出版社所在地址(varchar(200))
			# 3.city:出版社所在的城市(varchar(50))
			# 4.country:出版社所在的國家(varchar(50))
			# 5.website:出版社的網址(varchar(200))
			class Publisher(models.Model):
			    name = models.CharField(max_length=30)
			    address = models.CharField(max_length=200)
			    city = models.CharField(max_length=50)
			    country = models.CharField(max_length=50)
			    website = models.URLField()
   4)  將資料同步回資料庫
   		   先後執行第1 步和第2 步
        1. ./manage.py makemigrations
            作用:將每個應用下的modeles.py檔案生成一個數據庫的中間檔案,並將中間檔案儲存
            到migrations的目錄中
        2. /manage.py migrate
            作用:將每個應用下的migrations目錄中的中間檔案同步到資料庫中