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操作的主要内容,如果未能解决你的问题,请参考以下文章

Django基础之django ORM单表操作

Django---ORM操作大全

Django---ORM操作

Django orm操作

django orm 操作

Django ORM 操作