Escolar Documentos
Profissional Documentos
Cultura Documentos
Cursopython04 120926150923 Phpapp01
Cursopython04 120926150923 Phpapp01
• Conceitos:
• Suporta transações;
nome VARCHAR(30),
tel VARCHAR(20));
SQLITE
• Inserindo dados:
• Utilizando o módulo:
• cursor = con.cursor( )
Módulo SQLITE3
• dados = cursor.fetchall( )
• Para inserir, remover ou atualizar dados você deve utilizar uma transação;
• Por exemplo:
• Passando parâmetros;
• Forma errada:
• Forma correta:
while True:
opcao = raw_input('Qual a sua opção (a)dicionar, (l)istar ou (s)air: ')
if opcao == 'a':
nome = raw_input('Digite o nome: ')
tel = raw_input('Digite o telefone: ')
cursor.execute('INSERT INTO agenda(nome,tel) VALUES (?, ?)', (nome, tel))
con.commit()
elif opcao == 'l':
cursor.execute('SELECT nome, tel FROM agenda ORDER BY nome')
for nome, tel in cursor.fetchall():
print nome, tel
elif opcao == 's':
break
else:
print 'Digite uma opção válida !'
SQLAlchemy
• Utilizando o setuptools.
Setup Tools
• http://pypi.python.org/pypi/setuptools/
• Instalação:
• Windows:
• Linux e MacOS:
• sudo sh setuptools-0.6c11-py2.6.egg
SQLAlchemy
• Instalação:
• Windows:
• easy_install SQLAlchemy
• Linux e MacOS:
• Conceitos básicos:
• É necessário criar uma classe para cada tabela que se queira mapear;
• As próprias classes podem ser utilizadas para criar as tabelas, caso elas
não existam;
• Forma geral:
from sqlalchemy import *
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
class Contato(Base):
__tablename__ = 'agenda' Atributo obrigatório
id = Column(Integer, primary_key=True)
nome = Column(String)
tel = Column(String)
SQLAlchemy
id = Column(Integer, primary_key=True)
nome = Column(String(30))
tel = Column(String(20))
SQLAlchemy
• engine = create_engine('sqlite:///agenda.db')
• Você pode, na criação, pedir que a engine mostre todos o código SQL
gerado por ela: create_engine('sqlite:///agenda.db', echo=True)
SQLAlchemy
Base.metadata.create_all(engine)
Session = sessionmaker(bind=engine)
session = Session()
SQLAlchemy
• session.add(objeto)
• session.commit( )
• Caso algum erro ocorra, você deve chamar o rollback, para deixar o estado do
banco de dados igual ao do último commit realizado.
SQLAlchemy - Consultas
• bruno = session.query(Contato).get(5)
• contatos = session.query(Contato).all( )
• Ordenando os resultados:
• contatos = session.query(Contato).order_by(Contato.nome).all( )
• pedro = session.query(Contato).filter(nome=”Pedro”).first( )
• Restringindo os resultados:
• Você pode usar o método all, para obter todos os resultados ou first para
obter apenas o primeiro.
SQLAlchemy
contato = session.query(Contato).get(5)
contato.tel = '8888-8888'
session.commit()
contato = session.query(Contato).get(5)
session.delete(contato)
session.commit()
SQLAlchemy
Base = declarative_base()
class Contato(Base):
__tablename__ = 'agenda'
id = Column(Integer, primary_key=True)
nome = Column(String)
tel = Column(String)
• Continua ...
engine = create_engine('sqlite:///agenda.db')
Session = sessionmaker(bind=engine)
session = Session()
if not os.path.exists('agenda.db'):
Base.metadata.create_all(engine)
while True:
opcao = raw_input('Qual a sua opção (a)dicionar, (l)istar ou (s)air: ')
if opcao == 'a':
nome = raw_input('Digite o nome: ')
tel = raw_input('Digite o telefone: ')
session.add(Contato(nome, tel))
session.commit()
elif opcao == 'l':
for contato in session.query(Contato).order_by(Contato.nome):
print contato.nome, contato.tel
elif opcao == 's':
break
else:
print 'Digite uma opção válida !'