django配置mysql数据库
查看ubuntu已安裝的所有軟件:
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-pythondjango setting配置:
DATABASES?=?{'default':?{'ENGINE':?'django.db.backends.mysql',?'NAME':?'books',??#你的數(shù)據(jù)庫名稱'USER':?'root',??#你的數(shù)據(jù)庫用戶名'PASSWORD':?'',???#你的數(shù)據(jù)庫密碼'HOST':?'',???????#你的數(shù)據(jù)庫主機,留空默認為localhost'PORT':?'3306',???#你的數(shù)據(jù)庫端口} }在model模塊中添加如下建表語句:
vi app/models.py
class?test1(models.Model):????name?=?models.CharField(max_length=20)???#定義的字段name為字段名model模塊在app中,其中定義的類名就是表名(但是在數(shù)據(jù)庫中的表名會以app為前綴,例如項目為app則實際創(chuàng)建的表名為app_test1),CharField相當(dāng)于varchar,DateField相當(dāng)于datetime,max_length 相當(dāng)于參數(shù)限定長度“varchar(20)”
注意:這里如果之前已經(jīng)同步過一次數(shù)據(jù),現(xiàn)在又要添加字段,會報錯,解決辦法是在字段后面添加
null=True
例如:
ages=models.CharField(max_length=10,null=True)為表添加數(shù)據(jù):django需要查詢或者更新表時,需先導(dǎo)入表名才能獲取表內(nèi)的數(shù)據(jù)。
from?app.models?import?test1 def?huoqu(request):????a?=?test1(name='wangjiadongge')?????#test1為表名,name為字段名。a.save()return?HttpResponse("數(shù)據(jù)添加成功!")數(shù)據(jù)操作:
#獲取數(shù)據(jù) def?huoqu(request):??#通過objects這個模型管理器的all()獲得所有數(shù)據(jù)行,相當(dāng)于SQL中的SELECT?*?FROMlist?=?test1.objects.all()????#filter相當(dāng)于SQL中的WHERE,可設(shè)置條件過濾結(jié)果list1?=?test1.objects.filter(id=1)?#獲取單個對象list2?=?test.objects.get(id=1)?#限制返回的數(shù)據(jù)?相當(dāng)于?SQL?中的?OFFSET?0?LIMIT?2;test1.objects.order_by('name')[0:2]#數(shù)據(jù)排序test1.objects.order_by("id")#上面的方法可以連鎖使用test1.objects.filter(name="runoob").order_by("id")#輸出所有數(shù)據(jù)for?var?in?list:????????response1?+=?var.name?+?"?"response?=?response1return?HttpResponse("<p>"?+?response?+?"</p>")#更新數(shù)據(jù) #?-*-?coding:?utf-8?-*-from?django.http?import?HttpResponsefrom?app.models?import?test1def?testdb(request):????#修改其中一個id=1的name字段,再save,相當(dāng)于SQL中的UPDATEtest?=?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("<p>修改成功</p>")#刪除數(shù)據(jù) #?-*-?coding:?utf-8?-*-from?django.http?import?HttpResponsefrom?app.models?import?Test#?數(shù)據(jù)庫操作def?testdb(request):????#?刪除id=1的數(shù)據(jù)test1?=?Test.objects.get(id=1)test1.delete()#另外一種方式#test1.objects.filter(id=1).delete()#刪除所有數(shù)據(jù)#test1.objects.all().delete()return?HttpResponse("<p>刪除成功</p>")
#django在前端中展示從數(shù)據(jù)庫中獲取到的數(shù)據(jù):
html:
{%?for?a?in?names?%}id={{?a.id?}}:name={{?a.name?}}:sex={{?a.sex?}} {%?endfor?%}
注意:這里展示的數(shù)據(jù)必須是單條數(shù)據(jù),若是展示整個數(shù)據(jù)庫的內(nèi)容必須是逐條,整個取的話會導(dǎo)致出現(xiàn)QuerySet [<test2: test2 object>這種數(shù)據(jù)。
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經(jīng)典例子:
from?django.db?import?models????????#導(dǎo)入models模塊#表名: class?publisher(models.Model):????????#定義表名為publishname=models.CharField(max_length=30)?????#表字段nameaddress=models.CharField(max_length=50)??#表字段addresscity=models.CharField(max_length=60)?????#表字段citystate_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,字段類型為vacharauthors=models.ManyToManyField(author)?????#字段名為author,字段類型為ManyToManyFieldpublisher=models.ForeignKey(publisher)?????#關(guān)聯(lián)外部表publisherpublication_date=models.DateField()????????#字段名為publication_date,類型為日期類型#如果需要用戶和密碼,則執(zhí)行:
python?manage.py?createsuperuser???#創(chuàng)建用戶 python?manage.py?changepassword????#更改密碼#練習(xí)在python交互模式下操作數(shù)據(jù)庫:
./manage.py?shell??????????????#進入django變量的交互器 from?app.models?import?publisher?#導(dǎo)入publisher數(shù)據(jù)庫。#插入一條數(shù)據(jù):
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() ? #插入的數(shù)據(jù)寫入數(shù)據(jù)庫中
#更新一條數(shù)據(jù):
p1.address="qinghualu" p1.save()#查看所有的數(shù)據(jù)
在models模塊中,建表語句下面添加如下:
def?__unicode__(self):return?self.name,self.address然后再去交換窗口查看所有數(shù)據(jù):
#查詢國家等于中國的一條數(shù)據(jù):
publisher.objects.filter(country="china")#查詢出來的數(shù)據(jù)進行更改:
a=publisher.objects.get(name="beijing") a.county="USA" a.save()#高效的更新數(shù)據(jù)方式,并且無需save:
publisher.objects.filter(id=1).update(name="qingdaodaxue")#在瀏覽器中打開后臺管理數(shù)據(jù)庫界面:
http://192.168.110.106/admin/
賬號就是同步數(shù)據(jù)庫時創(chuàng)建的用戶名和密碼,登陸進去。
在app下創(chuàng)建一個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
--------------------------------------分割線------------------------------------
轉(zhuǎn)載于:https://blog.51cto.com/xiaodongge/1903793
總結(jié)
以上是生活随笔為你收集整理的django配置mysql数据库的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux 下的U盘挂载
- 下一篇: linux cmake编译源码,linu