您好,登錄后才能下訂單哦!
查看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',??#你的數據庫名稱 ????????'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("<p>"?+?response?+?"</p>")
#更新數據 #?-*-?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("<p>修改成功</p>")
#刪除數據 #?-*-?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("<p>刪除成功</p>")
#django在前端中展示從數據庫中獲取到的數據:
html:
{%?for?a?in?names?%} ????id={{?a.id?}}:name={{?a.name?}}:sex={{?a.sex?}} {%?endfor?%}
注意:這里展示的數據必須是單條數據,若是展示整個數據庫的內容必須是逐條,整個取的話會導致出現QuerySet [<test2: test2 object>這種數據。
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
--------------------------------------分割線------------------------------------
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。