11 ORM简介

编辑本博客

yuan先生博客

记录一次报错

从windows迁移到Centos后运行报错

django.db.utils.InternalError: Packet sequence number wrong - got 1 expected 0

服务器IP为10.10.10.12

开发电脑为10.10.12.100

 在开发电脑上没问题,如下是django配置

 但是迁移到服务器后就不行, 连接报错。

原因:用10.10.10.12去连接10.10.10.12数据库,不会当连接127.0.0.1处理,所以没权限。

处理办法:数据库添加user1,从10.10.10.12访问权限,或者django数据库服务器设置为127.0.0.1

 

创建models

数据类型
  • AutoField:自增数据段
  • CharField:字符串,max_length
  • DateField:日期
  • DecimalField:小数,max_digits,decimal_places
  • FileField:upload_to='avatars/'文件保存目录,default='avatars/default.png'指定默认值
  • ImageField
  • verbose_name:别名

获取数据别名:

models.UserInfo._meta.get_field('title').verbose_name即可获取UserInfo表title字段的verbose_name

media文件配置见cnblog项目

FileField类型的参数和ImageField类型参数类似

  • 必须接收文件对象,ImageField必须是图片。在传入文件对象的时候,django会自动下载该文件,并保存到upload_to文件夹中,如果没有改文件夹则自动创建
  • 如果配置过media文件夹,则将文件保存在media文件夹下
  • 在数据库中存放的是该文件的相对路径,而非文件对象
参数
  • primary_key添加主键约束字段
  • unique唯一性约束
  • verbose_name详细显示名称

配置数据库

setting.py

DATABASES={
    "default":{
        "ENGINE":'django.db.backends.mysql',
        'NAME':'orm',
        'USER':'root',
        "PASSWORD":'123.com',
        'HOST':'127.0.0.1',
        'PORT':3306
    }
}
View Code

Django默认导入的是MySQLdb,但是MySQLdb在py3上支持有问题,py3用pymysql,所以需要在项目__init__.py文件中添加如下代码

import pymysql
pymysql.install_as_MySQLdb()
View Code

INSTALLED_APP中注册app

由模型生产表

python manage.py makemigrations
python manage.py migrate

即迁移数据库

数据库中生成的表

打开ORM操作日志,需在setting中添加如下代码

LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'handlers': {
        'console':{
            'level':'DEBUG',
            'class':'logging.StreamHandler',
        },
    },
    'loggers': {
        'django.db.backends': {
            'handlers': ['console'],
            'propagate': True,
            'level':'DEBUG',
        },
    }
} 
View Code

 

posted @ 2018-06-28 20:24  丫丫625202  阅读(244)  评论(0编辑  收藏  举报