associação pythonbrasil[11] django zope/plone planet Início Logado como (Entrar)

Diferenças para "DicasSqlalchemy"

Diferenças entre as versões de 2 e 3
Revisão 2e 2009-12-17 13:09:11
Tamanho: 1590
Editor: big_rid
Comentário:
Revisão 3e 2009-12-17 15:36:21
Tamanho: 1635
Editor: big_rid
Comentário:
Deleções são marcadas assim. Adições são marcadas assim.
Linha 3: Linha 3:
=== Como criar um pool de conexões no sqlalchemy ? === === Criando tabela no sqlalchemy ===
Linha 5: Linha 5:
from sqlalchemy import create_engine,Table,Column,Integer,String,MetaData,PrimaryKeyConstraint,Sequence,Boolean
from sqlalchemy.engine.url import
URL
from sqlalchemy.orm import
sessionmaker
 * tabela -> cli_usu
 * servidor de banco de dados utilizado no exemplo -> FireBird 2.1
{{{#!python
# este arquivo: db.py:

from sqlalchemy import create_engine,Table,Column,Integer,String,MetaData
from sqlalchemy import
PrimaryKeyConstraint,Sequence,Boolean,URL,sessionmaker
Linha 10: Linha 14:
#bdband pode ser substituido por 'c:\dados\banco.fdb'
Linha 16: Linha 21:
cli_usu = Table('cli_usu',
                   metadata,
                   Column('cli_usu_id',Integer,Sequence('gn_cli_usu_id')),#criar um campo cli_usu_id, do tipo inteiro, utilizando sequence do banco
                   Column('nome',String(20),nullable=False),#criar um campo nome, do tipo String com tamanho 20, não aceitando null
                   Column('senha',String(10),nullable=False),#criar um campo senha, do tipo String com tamanho 10, não aceitando null
                   Column('ativo',Boolean,nullable=False)#criar um campo ativo, do tipo Boolean (no caso do firebird o sqlalchemy irá criar o campo ativo do tipo smallint (0-false,1-true ), não aceitando null
                   )
cli_usu_pk = PrimaryKeyConstraint('cli_usu_id',name='CLI_USU_PK') #criar a pk da tabela cli_usu, atribuindo um nome a constraint
cli_usu.append_constraint(cli_usu_pk) #incluindo a pk à tabela cli_usu
cli_usu = Table('cli_usu',
                 metadata,
                 Column('cli_usu_id',Integer,Sequence('gn_cli_usu_id')),
                 Column('nome',String(20),nullable=False),
                 Column('senha',String(10),nullable=False),
                 Column('ativo',Boolean,nullable=False)
                 )
#cria a pk
cli_usu_pk = PrimaryKeyConstraint('cli_usu_id',name='CLI_USU_PK')
Linha 26: Linha 31:
metadata.create_all()#cria as tabelas no banco (caso nao existam) #adiciona a pk à tabela
cli_usu.append_constraint(cli_usu_pk)
Linha 28: Linha 34:
Session = sessionmaker(bind=engine,autoflush=True,transactional=True) #cria o sessionmaker #cria as tabelas no banco (caso nao existam)
metadata.create_all()

#cria o sessionmaker
Session = sessionmaker(bind=engine,autoflush=True,transactional=True)

#Agora, a partir de qualquer lugar do seu projeto, você pode instanciar uma sessao.

#outro arquivo: login.py
import db
sessao = db.Session()
sel_cli = db.cli_usu.select(db.cli_usu.c.ativo==1)
result = sessao.execute(sel_cli)
for row in result:
    print row.nome,row.cli_usu_id,row.senha,row.ativo
sessao.commit()
sessao.close()}}}

Criando tabela no sqlalchemy

  • tabela -> cli_usu

  • servidor de banco de dados utilizado no exemplo -> FireBird 2.1

   1 # este arquivo: db.py:
   2 
   3 from sqlalchemy import create_engine,Table,Column,Integer,String,MetaData
   4 from sqlalchemy import PrimaryKeyConstraint,Sequence,Boolean,URL,sessionmaker
   5 
   6 #bdband -> alias criado no arquivo firebird.conf ( Firebird 2.1 )
   7 #bdband pode ser substituido por 'c:\dados\banco.fdb'
   8 
   9 _url     = URL('firebird','SYSDBA','masterkey','192.168.1.11','3052','bdband')
  10 engine   = create_engine(_url)
  11 metadata = MetaData(bind=engine)
  12 
  13 #cria a tabela
  14 cli_usu = Table('cli_usu',
  15                  metadata,
  16                  Column('cli_usu_id',Integer,Sequence('gn_cli_usu_id')),
  17                  Column('nome',String(20),nullable=False),
  18                  Column('senha',String(10),nullable=False),
  19                  Column('ativo',Boolean,nullable=False)
  20                  )
  21 #cria a pk
  22 cli_usu_pk = PrimaryKeyConstraint('cli_usu_id',name='CLI_USU_PK')
  23 
  24 #adiciona a pk à tabela
  25 cli_usu.append_constraint(cli_usu_pk)
  26 
  27 #cria as tabelas no banco (caso nao existam)
  28 metadata.create_all()
  29 
  30 #cria o sessionmaker
  31 Session = sessionmaker(bind=engine,autoflush=True,transactional=True)
  32 
  33 #Agora, a partir de qualquer lugar do seu projeto, você pode instanciar uma sessao.
  34 
  35 #outro arquivo: login.py
  36 import db
  37 sessao  = db.Session()  
  38 sel_cli = db.cli_usu.select(db.cli_usu.c.ativo==1)
  39 result  = sessao.execute(sel_cli)        
  40 for row in result:
  41     print row.nome,row.cli_usu_id,row.senha,row.ativo
  42 sessao.commit()
  43 sessao.close()