Django配合数据库使用

1、如果要使用mysql数据库在settings.py文件中将默认使用sqllite3数据库改为mysql数据库:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'liuyanban', # 数据库的名称
        'USER': 'root',
        'PASSWORD': '123456',
        'HOST': 'localhost',
    }
}

2、上述步骤做完之后先在数据库中创建对应的数据库,然后在models.py文件中配置数据库的字段:

class LiuYanBan(models.Model):
	# 下面分别是数据库中对应表的四个字段
    pid = models.AutoField(primary_key=True)
    user_name = models.CharField(max_length=20, default=None)

    class Meta:
    	# 自定义数据库名称
        db_table = 'liuyan'

3、在项目中的cmd中分别运行以下命令:

# makemigrations这句的作用是:获取modles.py文件中获取的修改部分,程序第一次运行时可以不执行这个
python manage.py makemigrations
# migrate这句的作用是:将models.py文件中修改的部分同步到数据库中,在程序第一次运行时这一句必须要执行。
python manage.py migrate

4、在views.py文件中进行数据操作:

a> 添加数据:

# 第一种添加数据
    # Person.objects.create(user_name='张三', user_height=180)

    # 第二种添加数据
    # p = Person(user_height=102)
    # p.save()

    # 第三种添加数据
    # p = Person()
    # p.user_name = '李明'
    # p.user_height = 170
    # p.save()

    # 第四种添加数据
    # 在创建新的数据之前,先查询数据库中是否已经存在对应的数据,如果已经存在就不再创建这个对象了。可以起到一定的去重作用。
    Person.objects.get_or_create(user_name='李四', user_height=180)

b> 数据的查询

	# 1、单条数据查询:get(),参数就是查询条件,可以使类中的属性。
    p = Person.objects.get(user_name='李四')

    # 2、多条数据查询:filter(),参数就是查询提哦案件,查询结果是一个结果集QuerySet。
    p = Person.objects.filter(user_height=170).first()

    # 3、查询所有数据:all(),返回值也是一个结果集QuerySet。
    p = Person.objects.all()

    return render(request, 'index.html', {'p': p})

c> 数据的修改

	p = Person.objects.get(user_name='李四')
    p.user_height = 100
    p.save()

    # update():参数就是更新的数据。这个函数是更新所有的数据。
    Person.objects.update(user_height=50)

d> 数据的删除

Person.objects.get(user_name='李四').delete()

如果是从网页上通过get/post请求返回来的数据,先获取在写入:
POST:

获取数据(post):
# get请求获取数据只需要将'POST'替换为‘GET’即可
# 括号中的值为html页面中对用input标签的name的属性值
		name = request.POST.get('name')
        email = request.POST.get('email')
        dizhi = request.POST.get('address')
        content = request.POST.get('message')
     
添加数据:
		l = LiuYanBan(name=name, email=email, dizhi=dizhi, content=content)
        l.save()
     

你可能感兴趣的:(Django)