- 今天学习的是连接mysql数据库,并对数据库进行简单的级联操作,添加外键操作。
- 首先是连接mysql数据库的相关操作。
- 1.下载一个pymysql的包。具体操作可以在terminal中pip一个,也可以在项目的settings操作中进行添加。
- 2.下载完了之后,在项目的settings.py中,对DATABASE这一参数进行操作。设置数据库的位置等参数。
DATABASES = {
'default': {
# MYSQL
'ENGINE': 'django.db.backends.mysql',
'NAME': 'JUST',
'USER': 'root',
'PASSWORD': 'Just123456',
'HOST': 'cdb-rlerhd0g.cd.tencentcdb.com',
'PORT': '10078'
}
}
- 3.因为pymysql包是模拟相关操作的。因此需要在__init__.py文件中,输入两行代码。
import pymysql
pymysql.install_as_MySQLdb()
- 4.进行了这么多操作之后,还是会出错,主要是针对版本不够新,会报错,此时可以参考https://blog.csdn.net/qq_37067475/article/details/90115641
这一篇csdn博客。
- 仿照视频的内容,我在two这一个项目中的models.py中进行了User类和Address类编写,Address中就含有一个外键,是指向User的。
class User(models.Model):
u_username = models.CharField(max_length=32)
u_password = models.CharField(max_length=14)
class Address(models.Model):
u_address = models.CharField(max_length=14)
u_name=models.ForeignKey(User, on_delete=models.CASCADE)
- 在连接完成mysql的云数据库之后,进行数据迁移的相关操作。
- 在进行级联数据测试之前,首先模拟了之前在views.py中使用的render函数的原型。
def index(request):
two_index = loader.get_template('index.html')
context = {
"username": "Jack"
}
result = two_index.render(context=context)
print(result)
return HttpResponse(result)
- 上面就是对render函数的模拟。首先项目会取出相应的html文件,然后再根据文本输入信息进行渲染,最后想客户端输出已经渲染完成的html文件。
- 接下来就是根据外键,输出相关信息。
def get_address(request):
address = Address.objects.get(pk=1)
u_add = address.u_name
return HttpResponse("Location " + address.u_address + " Address %s" % u_add.u_username)
- 如果含有1对M的情况,可以选择函数中的set集,对外键对应的所有数据进行输出。