django配置mysql数据库
查看ubuntu已安装的所有软件:
创新互联建站主要从事成都做网站、网站建设、外贸营销网站建设、网页设计、企业做网站、公司建网站等业务。立足成都服务集宁,10余年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:18982081108
dpkg -l dpkg -l | grep MySQL
查看软件安装的路径
dpkg -L | grep mysql
查看开机启动的软件,需要额外安装插件:
sudo apt-get install rcconf rcconf 更能全一点的: sudo apt-get install sysv-rc-conf sysv-rc-conf
安装mysql:
# apt-get install python-setuptools libmysqld-dev libmysqlclient-dev # easy_install mysql-python 或者 #pip install mysql-python
django setting配置:
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'books', #你的数据库名称 'USER': 'root', #你的数据库用户名 'PASSWORD': '', #你的数据库密码 'HOST': '', #你的数据库主机,留空默认为localhost 'PORT': '3306', #你的数据库端口 } }
在model模块中添加如下建表语句:
vi app/models.py
class test1(models.Model): name = models.CharField(max_length=20) #定义的字段name为字段名
model模块在app中,其中定义的类名就是表名(但是在数据库中的表名会以app为前缀,例如项目为app则实际创建的表名为app_test1),CharField相当于varchar,DateField相当于datetime,max_length 相当于参数限定长度“varchar(20)”
python manage.py makemigrations #查看表有哪些更改 python manage.py migrate app #创建表结构
注意:这里如果之前已经同步过一次数据,现在又要添加字段,会报错,解决办法是在字段后面添加
null=True
例如:
ages=models.CharField(max_length=10,null=True)
为表添加数据:django需要查询或者更新表时,需先导入表名才能获取表内的数据。
from app.models import test1 def huoqu(request): a = test1(name='wangjiadongge') #test1为表名,name为字段名。 a.save() return HttpResponse("数据添加成功!")
数据操作:
#获取数据 def huoqu(request): #通过objects这个模型管理器的all()获得所有数据行,相当于SQL中的SELECT * FROM list = test1.objects.all() #filter相当于SQL中的WHERE,可设置条件过滤结果 list1 = test1.objects.filter(id=1) #获取单个对象 list2 = test.objects.get(id=1) #限制返回的数据 相当于 SQL 中的 OFFSET 0 LIMIT 2; test1.objects.order_by('name')[0:2] #数据排序 test1.objects.order_by("id") #上面的方法可以连锁使用 test1.objects.filter(name="runoob").order_by("id") #输出所有数据 for var in list: response1 += var.name + " " response = response1 return HttpResponse("" + response + "
")
#更新数据 # -*- coding: utf-8 -*- from django.http import HttpResponse from app.models import test1 def testdb(request): #修改其中一个id=1的name字段,再save,相当于SQL中的UPDATE test = test1.objects.get(id=1) test.name = 'Google' test.save() #另外一种方式 #test1.objects.filter(id=1).update(name='Google') # 修改所有的列 # test1.objects.all().update(name='Google') return HttpResponse("修改成功
")
#删除数据 # -*- coding: utf-8 -*- from django.http import HttpResponse from app.models import Test # 数据库操作def testdb(request): # 删除id=1的数据 test1 = Test.objects.get(id=1) test1.delete() #另外一种方式 #test1.objects.filter(id=1).delete() #删除所有数据 #test1.objects.all().delete() return HttpResponse("删除成功
")
#django在前端中展示从数据库中获取到的数据:
html:
{% for a in names %} id={{ a.id }}:name={{ a.name }}:sex={{ a.sex }} {% endfor %}
注意:这里展示的数据必须是单条数据,若是展示整个数据库的内容必须是逐条,整个取的话会导致出现QuerySet [
django:
def testdb(request): #list = test2.objects.all() names = test2.objects.filter(id=1) print names #return HttpResponse('this is test select mysql!') return render_to_response('a.html',locals()) #locals()是获取整个本地变量
-------------------分割线--------------------
#django经典例子:
from django.db import models #导入models模块 #表名: class publisher(models.Model): #定义表名为publish name=models.CharField(max_length=30) #表字段name address=models.CharField(max_length=50) #表字段address city=models.CharField(max_length=60) #表字段city state_province=models.CharField(max_length=30) county=models.CharField(default="CN",max_length=50) website=models.URLField() #表字段website,字段类型为地址 表名: class author(models.Model): first_name=models.CharField(max_length=30) last_name=models.CharField(max_length=40) email=models.EmailField(blank=True) #字段名字为email,字段类型为email #表名: class book(models.Model): title=models.CharField(max_length=100) #字段名为title,字段类型为vachar authors=models.ManyToManyField(author) #字段名为author,字段类型为ManyToManyField publisher=models.ForeignKey(publisher) #关联外部表publisher publication_date=models.DateField() #字段名为publication_date,类型为日期类型
python manage.py makemigrations #查看表有哪些更改 python manage.py migrate #同步数据库
#运行上面这条命令出现的错误: #Apply all migrations: admin, app, auth, contenttypes, sessions #Running migrations: #解决:这个错误是因为已经同步过一次数据库引起的,如果表中的字段要增加,需要添加null=True #比如:ages=models.CharField(max_length=10,null=True) #如果是新建一个表,则要删除app中migrations文件夹(一般不需要)。
#如果需要用户和密码,则执行:
python manage.py createsuperuser #创建用户 python manage.py changepassword #更改密码
#练习在python交互模式下操作数据库:
./manage.py shell #进入django变量的交互器 from app.models import publisher #导入publisher数据库。
#插入一条数据:
p1=publisher(name='qinghua university',address='wudaokou',city='beijing',state_province='beijing',county='china',website='www.qinghua.com')
p1.name #查看插入的name
p1.address #查看插入的address
p1.save() #插入的数据写入数据库中
#更新一条数据:
p1.address="qinghualu" p1.save()
#查看所有的数据
在models模块中,建表语句下面添加如下:
def __unicode__(self): return self.name,self.address
然后再去交换窗口查看所有数据:
publisher.objects.all()
#查询国家等于中国的一条数据:
publisher.objects.filter(country="china")
#查询出来的数据进行更改:
a=publisher.objects.get(name="beijing") a.county="USA" a.save()
#高效的更新数据方式,并且无需save:
publisher.objects.filter(id=1).update(name="qingdaodaxue")
#在浏览器中打开后台管理数据库界面:
http://192.168.110.106/admin/
账号就是同步数据库时创建的用户名和密码,登陆进去。
在app下创建一个admin.py的文件
vi admin.py
from django.contrib import admin from app.models import publisher,author,book admin.site.register(publisher) admin.site.register(author) admin.site.register(book)
完成后,重新打开页面。
#django中引用bootstrap:
在setting.py中:
MEDIA_ROOT='/root/project/statics/bootstrap/'
在url.py中:
from django.conf import settings
--------------------------------------分割线------------------------------------
文章名称:django配置mysql数据库
转载来源:http://pwwzsj.com/article/phddps.html