Django項(xiàng)目中使用數(shù)據(jù)庫
安裝mysql數(shù)據(jù)庫,啟動數(shù)據(jù)庫服務(wù),創(chuàng)建數(shù)據(jù)庫
setting.py
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'db_py1807a',
"USER": "root",
"PASSWORD": "root", # 若默認(rèn)為空伐蒂,刪除這一行
"CHARSET": "utf8",
"HOST": "localhost",
"PORT": 3306,
}
}
遷移數(shù)據(jù)
將我們定義的數(shù)據(jù)告訴數(shù)據(jù)庫迷扇,由數(shù)據(jù)庫生成對應(yīng)的表
1)、python manage.py makemigrations# django生成遷移文件
2)塞俱、Python manage.py migrate # 將數(shù)據(jù)同步到數(shù)據(jù)庫上
#查詢遷移文件生成的SQL:python manage.py sqlmigrate blog num
操作數(shù)據(jù)
Django操作數(shù)據(jù)庫有三種方式
views.py
def add_user(request):
# 首先需要接收頁面?zhèn)鬟f過來的參數(shù)
username = 'zhaowu'
age = 16
password = '123456'
email = '110@qq.com'
try:
# 第一種方式,使用類方法的方式完成數(shù)據(jù)的操作
# user = models.User.create_user(username=username, \
# password=password, age=age, email=email)
# user.save()
# return HttpResponse('<h2>用戶添加成功</h2>')
#第三種互广,使用面向過程的方式實(shí)現(xiàn)
# 因?yàn)閙odel類繼承了我們的Model類敛腌,在Model類中有大量的方法
# user = models.User(username=username,password=password,\
# age=age, email=email)
user= models.User.um.add_user(username=username, \
password=password, age=age, email=email)
print(user.id, user.username, user.password, user.email)
# user.save()
return HttpResponse('<h2>用戶添加成功</h2>')
except:
return HttpResponse('<h2>用戶添加失敗</h2>')
models.py
# 第三種方法
class UserManager(models.Manager):
def add_user(self, username, password, age, email):
return self.create(username=username, password=password, age=age, email=email)
# Create your models here.
class User(models.Model):
id = models.AutoField(primary_key=True)
username = models.CharField(unique=True, max_length=255, verbose_name="用戶姓名")
password = models.CharField(max_length=255, verbose_name="用戶密碼")
age = models.IntegerField(default=0, verbose_name="用戶年齡")
nickname = models.CharField(max_length=255,null=True,blank=True)
birthday = models.DateTimeField(default=datetime.now(), verbose_name="用戶生日")
email = models.EmailField(max_length=255, verbose_name="用戶郵箱")
# 默認(rèn)為0:男卧土;1:女
gender = models.BooleanField(default=0)
um = UserManager()
# class Meta:
# db_table = 'blog_user'
# 第一種
@classmethod
def create_user(cls, username, password, age, email):
user = cls(username=username, password=password, age=age, email=email)
return user