天天看點

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目錄中的中間檔案同步到資料庫中