Вы находитесь на странице: 1из 15

DAL

Database Abstraction Layer

Utilizando as classes de acesso a dados do WEB2PY em outros projetos Python.

ORM

ORM

Request

http://twit2py.com/timeline/rochacbruno

{timeline:rows}
for tweet in timeline: DO SOMETHING

from gluon.sql import DAL,Field, Table Conexo, modelagem DAL (Model) db = DAL(postgres://username:password@host/db) utline = db.define_table(usertimeline, Field(user), Field(tweet), Field(timestamp,datetime), migrate=True)

Globals()

Output Response (view)

DAL queries (Controller)

def timeline(): user = request.args[0] query = utline.user==user order = utline.timestamp rows = db(query).select(orderby=~order) return dict(timeline=rows)

DATABASE SQL/GQL

SELECT user, tweet, timestamp FROM usertimeline WHERE user = rochacbruno ORDER BY timestamp desc

SQLite PostgreSQL MySQL Oracle Microsoft SQL Server FireBird DB2 Informix Ingres. Google BigTable Google App Engine (GAE) JDBC + executesql

from gluon.sql import DAL, Field, Table


Load Balance Replicao de dados Conexes simultneas a diversos bancos de dados Connection Pooling Migraes Automticas Parsing (Json, CSV, list, dict) Import e Export - CSV Constraints Transactions CRUD ( Queries, Sets, Joins, Like, Belongs....) Computed Fields Virtual Fields Traversing

Replicao / FailOver db = DAL(['mysql://host1','mysql://host2','mysql://host3']) Palavras reservadas db = DAL('sqlite://storage.db, check_reserved=['postgres', 'mssql,commom,all])

Connection Pooling db = DAL('mysql://host1,pool_size=10)

Raw_sql >>> print db.executesql('SELECT * FROM person;') [(1, uJos'), (2, uMickael')]

Last_sql >>> rows = db().select(db.person.ALL) >>> print db._lastsql SELECT person.id, person.name FROM person;

Transactions db.commit() db.rollback()

Distributed Transaction db_a = DAL('postgres://...') db_b = DAL('postgres://...') DAL.distributed_transaction_commit(db_a, db_b) DAL.distributed_transaction_rollback(db_a, db_b)

Exportar o banco de dados para CSV


>>> db.export_to_csv_file(open('somefile.csv', 'wb'))

Importar o banco de dados de um CSV


>>> db.import_from_csv_file(open('somefile.csv', 'rb'))

>>> rows = db(db.person.id > 0).select() >>> print rows.xml() <table> <thead> <tr> <th>person.id</th> <th>person.name</th> <th>dog.id</th> <th>dog.name</th> <th>dog.owner</th> </tr> </thead> <tbody> <tr class="even"> <td>1</td> <td>Alex</td> <td>1</td> <td>Skipper</td> <td>1</td> </tr> ... </tbody> </table>

Cache logs = db().select(db.log.ALL, cache=(cache.ram, 60)) logs = db().select(db.log.ALL, cache=(cache.disk, 60))

>>> rows = db(query).select() >>> rows_list = rows.as_list() >>> first_row_dict = rows.first().as_dict()

>>> rows = db(query).select() >>> first_row = rows.first() >>> last_row = rows.last()

_insert >>> print db.person._insert(name='Alex') INSERT INTO person(name) VALUES ('Alex'); Here is _count _count >>> print db(db.person.name=='Alex')._count() SELECT count(*) FROM person WHERE person.name='Alex'; Here is _select

_select >>> print db(db.person.name=='Alex')._select() SELECT person.id, person.name FROM person WHERE person.name='Alex'; Here is _delete _delete >>> print db(db.person.name=='Alex')._delete() DELETE FROM person WHERE person.name='Alex'; And finally, here is _update
_update >>> print db(db.person.name=='Alex')._update() UPDATE person SET WHERE person.name='Alex';

Вам также может понравиться