生活不易 我用python

跟着销售学python8-微信平台初次见识数据库(6)

2015-05-12  本文已影响343人  日月山人

 本来是计划跟着learn python the hard way ,继续下去, 不过中途补充一下,网页的基础知识吧,也不耽搁了。

[摘录]:用来记下,之前不理解的 地方?

  1.web.py  引入数据库的路径问题。   --已解决

 2、index.html调用参数,数据库中,怎么调用?   --已解决

数据库的学习

  只是知道一些数据库的知识, 一步步来吧,实战中学习呢。

 为什么要学数据库?

    上节中我们调用了move字典,但是如果我们是个网站,这些数据,如果只是字典的话,恐怕没法吧, 下面我们就要用数据库实现上篇的例子。

 为什么要学习?

     是不是又要多学东西呢?   呵呵,世界就是这样的,一句learn python the  hard way的话,

不管是什么原因,你一定要坚持下去,放弃的话,你会失去达到这个程度的机会。

SQLlite3的学习

(1)是不是从基础再学习, 还是先简单的解决。

(2)不如看看我们要解决的问题是什么?

         解决上一课的问题,那需要很复杂吗? 不需要

        那就简单的解决, 以后如果在遇到,在回头学啊。主力是解决python. 

SQLite3的基础

    sqlite3的基础是sql结构数据库,大致百度一下,看了看,不属于sql服务器,至于细节目前我们暂时搁置, 先看看SQL数据库的知识, 还是老地方w3school       

什么是数据库?

     

这个电子表格,名字叫 python2015web, 表1叫电影库,表2叫读者库,                           对应sql, python2015web就是数据库, 电影库就是数据库表。

   虽然上面是电子表格,但是数据库表就是这个样子的。

     不同的是,电子表格,基本是你手填上去的,而这里大多数是用命令。

   sql把命令分为两种,一种是直接操作电子表格内,一种是建立表和文件名的。

    操作电子表格的有:

       select 查询数据库并获得数据。

       update 更新数据库的数据。

       insert into :  插入数据库的数据

      delete : 删除数据库的数据。

  另一种:

       create  database   ,建立数据库

       alter  database ,  修改数据库

       create  table  ,建立数据库表

       alter  table , 修改数据库表

       drop  table ,  删除数据库

        create index , 创建索引

       drop  index,   删除索引 

 数据库的一些小知识:

1:  select 列名, select * from table

2:   sql 用单引号围绕文本值,如果是数值,不用单引号。

3:  where 

        有条件选取数据。

      select * from 数据库表 where 'city' = 'beijjing';

pyton中如何运用

 (1)首先在sqllite3 建立我们的数据库。

  (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)开始数据库制作网页了。

         修改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' ,   发生错误

  应该是数据库路径的问题,复制到数据库到web.py同级目录下看看,并修改路径。同时记下困惑python下的绝对路径问题。

index.htm:

$def with (movies)

豆瓣movies

$movies

发现浏览器显示:

 数据是十六进制,不对参数引用错误。

$def with (movies)

豆瓣movies

$movies['name']

   继续出现问题,

           IndexError 

  应该是movies['name'], 回头想想,错误的原因就是不知道取movies参数的值。

  改成问题:

  $movies.name

 一样还是出现问题。

exceptions.attributeError

 累了,学习就是这样的。。。    错误不知道 出现在哪里?  

 修改一下了index.htm

$def with (movies)

豆瓣movies

$def with (movies)

豆瓣movies

<ui>

 $for movename in movies:

<li>

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

</li>

  这个时候, 页面显示正常了, 由此可见了。 

 数据库传输过来了一定是一组对象。下面是服务器的显示。

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

     直接调用, select *  from move

不过,让我有些感兴趣的是 :127.0.0.1 后面,变化的端口。

上一篇下一篇

猜你喜欢

热点阅读