下面是关于"Django 2.2和MySQL使用的常见问题"的完整攻略:
1. 安装MySQL驱动
在使用Django和MySQL之前,你需要安装MySQL驱动。本文选择使用Python MySQL驱动的一个流行分支————pymysql。
- 在命令行窗口输入以下代码:
pip install pymysql
- 安装后,在
settings.py
中进行配置:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': '数据库名',
'USER': '用户名',
'PASSWORD': '密码',
'HOST': 'localhost',
'PORT': '3306'
}
}
其中必须要修改为你实际的数据库名称、用户名和密码。
2. 设置字符集
在MySQL中,你需要我们设置字符集为utf8mb4
,Django中的设置如下:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'OPTIONS':{
'charset':'utf8mb4',
'use_unicode':True,
},
'NAME': '数据库名称',
'USER': '用户名',
'PASSWORD':'密码',
'HOST':'localhost',
'PORT':'3306'
}
}
3. MYSQL插入中文报错
在MySQL中插入中文字符崩溃的问题,我们可以通过以下方式来解决:
{% block content %}
{% with name='张三' %}
INSERT INTO `person`(`name`) VALUES(%(name)s)
{% endwith %}
{% endblock %}
其中%(name)s
表示使用pymysql的参数绑定方法,这样中文字符就不会出现编码错误了。
4. 数据库表关联
如果需要在Django中定义多个MySQL数据库表之间的关联,我们可以使用ForeignKey(外键)。
例如,定义两个MySQL数据库表,名称分别为Person
和Department
。Person
表中有一个字段是Department的id(即外键),表示某个员工所属的部门。可以使用以下示例定义这两个表之间的关联:
class Person(Model):
department_id = ForeignKey('Department', on_delete=CASCADE)
# 其他字段的定义...
class Meta:
db_table = 'person'
class Department(Model):
# 其他字段的定义...
class Meta:
db_table = 'department'
其中department_id = ForeignKey('Department', on_delete=CASCADE)
表示定义了一个外键,其关联了Department
表的主键。
以上就是关于"Django 2.2和MySQL使用的常见问题"的完整攻略及示例说明。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:django 2.2和mysql使用的常见问题 - Python技术站