跟著銷售學(xué)python8-微信平臺初次見識數(shù)據(jù)庫(6)

?本來是計劃跟著learn python the hard way ,繼續(xù)下去, 不過中途補(bǔ)充一下,網(wǎng)頁的基礎(chǔ)知識吧,也不耽擱了。


[摘錄]:用來記下,之前不理解的 地方?

? 1.web.py ?引入數(shù)據(jù)庫的路徑問題。 ? --已解決

?2、index.html調(diào)用參數(shù),數(shù)據(jù)庫中,怎么調(diào)用? ? --已解決

數(shù)據(jù)庫的學(xué)習(xí)

? 只是知道一些數(shù)據(jù)庫的知識, 一步步來吧,實戰(zhàn)中學(xué)習(xí)呢。

?為什么要學(xué)數(shù)據(jù)庫?

? ? 上節(jié)中我們調(diào)用了move字典,但是如果我們是個網(wǎng)站,這些數(shù)據(jù),如果只是字典的話,恐怕沒法吧, 下面我們就要用數(shù)據(jù)庫實現(xiàn)上篇的例子。

?為什么要學(xué)習(xí)?

? ? ?是不是又要多學(xué)東西呢? ? 呵呵,世界就是這樣的,一句learn python the ?hard way的話,

不管是什么原因,你一定要堅持下去,放棄的話,你會失去達(dá)到這個程度的機(jī)會。

SQLlite3的學(xué)習(xí)

(1)是不是從基礎(chǔ)再學(xué)習(xí), 還是先簡單的解決。

(2)不如看看我們要解決的問題是什么?

? ? ? ? ?解決上一課的問題,那需要很復(fù)雜嗎? 不需要

? ? ? ? 那就簡單的解決, 以后如果在遇到,在回頭學(xué)啊。主力是解決python.?

SQLite3的基礎(chǔ)

? ? sqlite3的基礎(chǔ)是sql結(jié)構(gòu)數(shù)據(jù)庫,大致百度一下,看了看,不屬于sql服務(wù)器,至于細(xì)節(jié)目前我們暫時擱置, 先看看SQL數(shù)據(jù)庫的知識, 還是老地方w3school? ? ? ?

什么是數(shù)據(jù)庫?

? ? ?

這個電子表格,名字叫 python2015web, 表1叫電影庫,表2叫讀者庫, ? ? ? ? ? ? ? ? ? ? ? ? ? 對應(yīng)sql, python2015web就是數(shù)據(jù)庫, 電影庫就是數(shù)據(jù)庫表。


? ?雖然上面是電子表格,但是數(shù)據(jù)庫表就是這個樣子的。

? ? ?不同的是,電子表格,基本是你手填上去的,而這里大多數(shù)是用命令。

? ?sql把命令分為兩種,一種是直接操作電子表格內(nèi),一種是建立表和文件名的。

? ? 操作電子表格的有:

? ? ? ?select 查詢數(shù)據(jù)庫并獲得數(shù)據(jù)。

? ? ? ?update 更新數(shù)據(jù)庫的數(shù)據(jù)。

? ? ? ?insert into : ?插入數(shù)據(jù)庫的數(shù)據(jù)

? ? ? delete : 刪除數(shù)據(jù)庫的數(shù)據(jù)。

? 另一種:

? ? ? ?create ?database ? ,建立數(shù)據(jù)庫

? ? ? ?alter ?database , ?修改數(shù)據(jù)庫

? ? ? ?create ?table ?,建立數(shù)據(jù)庫表

? ? ? ?alter ?table , 修改數(shù)據(jù)庫表

? ? ? ?drop ?table , ?刪除數(shù)據(jù)庫

? ? ? ? create index , 創(chuàng)建索引

? ? ? ?drop ?index, ? 刪除索引?


?數(shù)據(jù)庫的一些小知識:

1: ?select 列名, select * from table

2: ? sql 用單引號圍繞文本值,如果是數(shù)值,不用單引號。

3: ?where?

? ? ? ? 有條件選取數(shù)據(jù)。

? ? ? select * from 數(shù)據(jù)庫表 where 'city' = 'beijjing';


pyton中如何運(yùn)用

?(1)首先在sqllite3 建立我們的數(shù)據(jù)庫。

? (venv)lixiang gothonweb $ sqlite3 movesite.db

SQLite version 3.8.5 2014-08-15 22:37:57

Enter ".help" for usage hints.

sqlite> create table move('id','name','author','year','nation');

sqlite> select * from move;

sqlite> insert into move values(1,'哆啦A夢','藤子F不二雄',2014,'日本');

sqlite> insert into move values(1,'海洋之歌','湯姆摩爾',2014,'法國');

sqlite> select * from move;

1|哆啦A夢|藤子F不二雄|2014|日本

1|海洋之歌|湯姆摩爾|2014|法國

sqlite>.quit

? ? 是不是很簡單啊。

(2)開始數(shù)據(jù)庫制作網(wǎng)頁了。

? ? ? ? ?修改web.py 文件


importweb?

urls = ('/','Index')

db = web.database(dbn='sqlite',db='../movesite.db')

app = web.application(urls,globals())

render = web.template.render('templates/')

class ?Index:

def GET(self):

movies = db.select('move')

return render.index(movies)

if__name__ =='__main__':

app.run()

class 'sqlite3.OperationalError' , ? 發(fā)生錯誤

? 應(yīng)該是數(shù)據(jù)庫路徑的問題,復(fù)制到數(shù)據(jù)庫到web.py同級目錄下看看,并修改路徑。同時記下困惑python下的絕對路徑問題。

index.htm:

$def with (movies)

豆瓣movies

$movies

發(fā)現(xiàn)瀏覽器顯示:

?數(shù)據(jù)是十六進(jìn)制,不對參數(shù)引用錯誤。

$def with (movies)

豆瓣movies

$movies['name']

? ?繼續(xù)出現(xiàn)問題,

? ? ? ? ? ?IndexError?

? 應(yīng)該是movies['name'], 回頭想想,錯誤的原因就是不知道取movies參數(shù)的值。

? 改成問題:

? $movies.name

?一樣還是出現(xiàn)問題。

exceptions.attributeError

?累了,學(xué)習(xí)就是這樣的。。。 ? ?錯誤不知道 出現(xiàn)在哪里? ?

?修改一下了index.htm

$def with (movies)

豆瓣movies

$def with (movies)

豆瓣movies

<ui>

?$for movename in movies:

<li>

? ? ? ? ?$movename.name,$movename.year,$movename.nation ?

</li>

? 這個時候, 頁面顯示正常了, 由此可見了。?

?數(shù)據(jù)庫傳輸過來了一定是一組對象。下面是服務(wù)器的顯示。

http://0.0.0.0:8080/

0.0 (1): SELECT * FROM move

127.0.0.1:52985 - - [13/May/2015 13:27:34] "HTTP/1.1 GET /" - 200 OK

0.0 (1): SELECT * FROM move

127.0.0.1:52985 - - [13/May/2015 13:27:36] "HTTP/1.1 GET /" - 200 OK

0.0 (1): SELECT * FROM move

127.0.0.1:52985 - - [13/May/2015 13:27:38] "HTTP/1.1 GET /" - 200 OK

0.0 (1): SELECT * FROM move

127.0.0.1:52996 - - [13/May/2015 13:29:07] "HTTP/1.1 GET /" - 200 OK

0.0 (1): SELECT * FROM move

127.0.0.1:52999 - - [13/May/2015 13:29:33] "HTTP/1.1 GET /" - 200 OK

0.0 (1): SELECT * FROM move

127.0.0.1:52999 - - [13/May/2015 13:29:37] "HTTP/1.1 GET /" - 200 OK

0.0 (1): SELECT * FROM move

127.0.0.1:53002 - - [13/May/2015 13:29:54] "HTTP/1.1 GET /" - 200 OK

? ? ?直接調(diào)用, select * ?from move

不過,讓我有些感興趣的是 :127.0.0.1 后面,變化的端口。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容