I like it because it's simple and I found it intuitive and easy to learn. You can set it up quickly on Fedora with:
yum install python-webpy yum install MySQL-pythonIt was straight forward to follow the tutorial, except it's not obvious in the tutorial how to specify a different DB server besides the default localhost. The keyword argument is 'host' just like in MySQLdb.connect(), which is provided by the Python package MySQLdb; i.e. the MySQL-python yum package. Here's the example from the tutorial in which an external DB server is declared:
db = web.database(dbn='mysql',\ user='user',\ pw='password',\ db='todo',\ host='mysql.example.com')Also, the PostgreSQL example translates into MySQL like this:
CREATE TABLE todo ( id serial primary key, title text, created timestamp default now(), `done` boolean default '0' );specifically boolean is an synonym for tinyint in MySQL so it uses not 'f' but '0' to represent false.
The output code from my tutorial is:
code.py:
#!/usr/bin/env python # Filename: code.py # Description: intro to web.py # Supported Langauge(s): Python 2.7.x # Time-stamp: <2011-06-04 18:15:06 someguy> # ------------------------------------------------------- import web # ------------------------------------------------------- render = web.template.render('templates/') urls = ( '/', 'index', '/add', 'add' ) app = web.application(urls, globals()) db = web.database(dbn='mysql',\ user='todo',\ pw='redacted',\ db='todo',\ host='mysql.example.com') # ------------------------------------------------------- class index: def GET(self): todos = db.select('todo') return render.index(todos) class add: def POST(self): i = web.input() n = db.insert('todo', title=i.title) raise web.seeother('/') # ------------------------------------------------------- if __name__ == "__main__": app.run()templates/index.html
$def with (todos) <ul> $for todo in todos: <li id="t$todo.id">$todo.title</li> </ul> <form method="post" action="add"> <p><input type="text" name="title" /> <input type="submit" value="Add" /></p> </form>
No comments:
Post a Comment