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()

 

 

4、在终端创建app

python manage.py startapp app01

 

 此时运行程序,如果报错:django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.13 or newer is required; you have 0.9.3.

 解决方法:

  1: 将django降到2.1.4版本(使用Django2.2版本会出现此问题,先删除Django2.2,重新安装2.1模块)

  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

 

 

5、setting.py注册app

 

 

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'app01',            #末尾添加
]

 

 

6、在app内的models.py创建类

class UserType(models.Model):
title = models.CharField(max_length=32)


class UserInfo(models.Model):
name = models.CharField(max_length=16)
age = models.IntegerField()
ut = models.ForeignKey("UserType", on_delete=models.CASCADE)

 一个类对应一张表。如果要设置外键,要在参数里加上“on_delete=models.CASCADE

 

7、创建数据表

终端运行:

python manage.py makemigrations

python manage.py migrate

 将之前在models.py内创建类对应的表创建出来(如果使用mysql5.5会报错,安装5.6或更新版本)

 


 

二、对数据库的操作

 

 增加或删除表及对表结构的操作可在models.py进行。

对数据的增删改查可在views中定义函数操作。

略。。。

 


 

posted @ 2019-08-10 12:03  tianqibucuo  阅读(127)  评论(0)    收藏  举报