日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

django配置mysql数据库

發(fā)布時間:2024/1/17 数据库 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 django配置mysql数据库 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

查看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-python



django 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)”


python?manage.py?makemigrations????#查看表有哪些更改 python?manage.py?migrate?app?????#創(chuàng)建表結(jié)構(gòu)

注意:這里如果之前已經(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,類型為日期類型


python?manage.py?makemigrations?????#查看表有哪些更改 python?manage.py?migrate?????#同步數(shù)據(jù)庫#運行上面這條命令出現(xiàn)的錯誤: #Apply?all?migrations:?admin,?app,?auth,?contenttypes,?sessions #Running?migrations: #解決:這個錯誤是因為已經(jīng)同步過一次數(shù)據(jù)庫引起的,如果表中的字段要增加,需要添加null=True #比如:ages=models.CharField(max_length=10,null=True) #如果是新建一個表,則要刪除app中migrations文件夾(一般不需要)。


#如果需要用戶和密碼,則執(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ù):

publisher.objects.all()


#查詢國家等于中國的一條數(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)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。