django数据库修改操作(django添加数据)

虚拟屋 2022-12-21 00:01 编辑:admin 263阅读

1. django添加数据

最近对一个django项目进行修改,其中在models.py添加了新的字段,需要同步到数据库。

尝试使用

python manage.py syncdb

提示成功,但未对数据库进行任何操作,到数据库中查看,新字段并没有同步进来。

解决办法如下:

python manage.py shell

进入后

from django.db import connection

新建一个cursor,用于连接

cursor=conneciton.cursor()

下一步就可以进行对数据库的操作了,把在model中定义的量加入表中:

cursor.execute('ALTER TABLE table_name add port Integer default 0')

sql 语法:ALTER TABLE table_name add col_name col_type default ..

到这步已经添加完成

下面补充一下,如果在已有django项目里面新建一张表,该如何操作:

例如,在app下面models.py中新加一张表后,尝试使用

python manage.py syncdb

发现结果提示并没有新建的列表

此时,查看app目录下有没有migrations文件,如果存在,删除所有pyc文件和migrations文件。

删除后,再使用

python manage.py syncdb

此时应该可以进行同步了,新表会提示创建在数据库中

2. django修改数据

Django里面,管理数据库和sqlarchemy类似,也是通过orm框架来实现的。所有的数据库的建立,都是在model.py里面通过类来实现的。

首先看看如何创建一个单表:

a. 先定义一个类,继承models.Model, 然后根据需求定义参数,这些参数的类型和变量后面会进一步阐述

models.py

from django.db import modelsclass UserInfo(models.Model):username = models.CharField(max_length=32)password = models.CharField(max_length=64)

b. 注册app

settings.py

INSTALLED_APPS = [‘django.contrib.admin‘,‘django.contrib.auth‘,‘django.contrib.contenttypes‘,‘django.contrib.sessions‘,‘django.contrib.messages‘,‘django.contrib.staticfiles‘,‘app01‘,]

c.执行命令。 第一条命令会生成一个初始化文件,第二个命令会生成对应的表

python manage.py makemigrationspython manage.py migrate

这样,就在PyCharm自带的sqlite数据库里面成功的生成了一个app01_UserInfo的表。这个表默认会有一个自增的id作为主键,另外两个字段是我们通过类创建的。

d. 如果希望使用mysql,因为Django默认使用了MySqldb模块,这个在3.0版本里面不存在,会直接报错。我们需要改为pymysql的模块,方法如下:

在project同名文件夹下的__init__文件中添加如下代码即可:

import pymysql

pymysql.install_as_MySQLdb()

2. 对于单表的增删改查询

查询

获取所有结果,获取到的结果是一个QuerySet的类似列表的对象,每一个元素本身又是一个对象,包括了id,name,password等属性。

obj = models.UserInfo.objects.all()

<QuerySet [<UserInfo: UserInfo object>, <UserInfo: UserInfo object>, <UserInfo: UserInfo object>, <UserInfo: UserInfo object>, <UserInfo: UserInfo object>]>

可以通过filter进行过滤,相当于sql的where语句,因为结果也是QuerySet,因此需要再使用first()获取第一个值

obj = models.UserInfo.objects.filter(id=nid).first()

增加

models.UserInfo.objects.create(username=u,password=p,user_group_id=3)

删除,可以在filter的基础上进行删除

models.UserInfo.objects.filter(id=nid).delete()

修改,有两种常见方式

第一个方式

models.UserInfo.objects.filter(id=nid).update(username=u,password=p)

第二个方式

obj=models.UserInfo.objects.filter(id=nid)obj.username=uobj.save()

3. django使用

用session验证

4. django添加数据到数据库

首先,pip install pymysql然后通过客户端或别的工具进入mysql数据库,创建数据表,比如user在settings里:

# Database# https://docs.djangoproject.com/en/1.11/ref/settings/#databasesimport pymysql # 一定要添加这两行!pymysql.install_as_MySQLdb()DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'user', 'HOST': '192.168.1.120', 'USER': 'root', 'PASSWORD': '123', 'PORT': '3306', }}

最后还要在Django中,执行migrations和migrate。推荐Django免费学习网站,刘江的Django教程,相当不错。

5. django添加数据过程

1.拷贝文件django-admin.py到自定义目录后就可以了? 2.python的安装路径设置为系统环境变量

6. django添加数据库

实现缓存的方式,有多种,本地内存缓存,数据库缓存,文件系统缓存。这里介绍使用Redis数据库进行缓存。

环境

redis

django-redis

配置

settings.py

CACHES = { "default": { "BACKEND": "django_redis.cache.RedisCache", "LOCATION": "redis://127.0.0.1:6379/1", "OPTIONS": { "CLIENT_CLASS": "django_redis.client.DefaultClient", "PASSWORD": "mysecret"

}

}

}

python manage.py createcachetable1

缓存有站点缓存,和单个view缓存

站点缓存:

settings.py

MIDDLEWARE = [ # 站点缓存 , 注意必须在第一个位置

'django.middleware.cache.UpdateCacheMiddleware',

... # 站点缓存, 注意必须在最后一个位置

'django.middleware.cache.FetchFromCacheMiddleware',

]

视图缓存:

views.py

from django.shortcuts import renderfrom django.views.decorators.cache import cache_pagefrom cache.models import Foo# 在需要缓存的视图上添加装饰器, 参数是设置timeout 超时时间, 单位是秒, @cache_page(60)def index(request):

bar = Foo.objects.all() return render(request, 'cache/index.html', {'bar': bar})

7. django使用数据库

scrapy使用peewee包来做数据的写入,peewee是一个轻量级的ORM,只要在字段设计上和表名字与django的ORM对应上就可以了

8. django 增加数据库字段

如果没有其他设置方面的问题,试试这个:

1、单元格内容太多,超出显示范围,也会导致边框不能显示。解决方法:加宽或加高单元格。

2、所在的单元格上有文本框(无边框、无填充色的那种)。解决方法:找到文本框并删除。