Django---ORM操作
Posted cky-2907183182
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django---ORM操作相关的知识,希望对你有一定的参考价值。
一、Django连接MySQL
1、创建数据库 (注意设置 数据的字符编码)
由于Django自带的orm是data_first类型的ORM,使用前必须先创建数据库
create database db default character set utf8 collate utf8_general_ci;
2、修改project中的settings.py文件中设置 连接 MySQL数据库(Django默认使用的是sqllite数据库)
DATABASES = ‘default‘: ‘ENGINE‘: ‘django.db.backends.mysql‘, ‘NAME‘:‘dbname‘, ‘USER‘: ‘xxx‘, ‘PASSWORD‘: ‘xxx‘, ‘HOST‘: ‘localhost‘, ‘PORT‘: ‘3306‘,
3、修改project 中的__init__py 文件设置 Django默认连接MySQL的方式
import pymysql
pymysql.install_as_MySQLdb()
此时运行程序,如果报错:django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.13 or newer is required; you have 0.9.3.
解决方法:
1: 将django降到2.1.4版本(使用Django2.2版本会出现此问题,亲测可用)
2:进入到python安装目录下:。。。/site-packages/django/db/backends/mysql的base.py文件,注释掉如下部分(35-36行):
if version < (1, 3, 3): raise ImproperlyConfigured("mysqlclient 1.3.3 or newer is required; you have %s" % Database.__version__)
此时仍会会报错,报错信息如下:AttributeError: ‘str’ object has no attribute ‘decode
找到operations.py文件(146行),将decode改为encode(146行):
if query is not None:
query = query.decode(errors=‘replace‘)
return query
改为
if query is not None:
query = query.encode(errors=‘replace‘)
return query
4、在终端创建app
python manage.py startapp app01
5、在app内的models.py创建类
class UserInfo(models.Model): nid = models.BigAutoField(primary_key=True) username = models.CharField(max_length=32) password = models.CharField(max_length=64)
6、setting.py注册app
INSTALLED_APPS = [ ‘django.contrib.admin‘, ‘django.contrib.auth‘, ‘django.contrib.contenttypes‘, ‘django.contrib.sessions‘, ‘django.contrib.messages‘, ‘django.contrib.staticfiles‘, ‘app01‘, #末尾添加 ]
7、创建数据表
终端运行:
python manage.py makemigrations
python manage.py migrate
二、modles.py创建表
以上是关于Django---ORM操作的主要内容,如果未能解决你的问题,请参考以下文章