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、所在的单元格上有文本框(无边框、无填充色的那种)。解决方法:找到文本框并删除。