Chave estrangeira no SQLite + Python

1,192 views
Skip to first unread message

Rick Deckard

unread,
Dec 10, 2012, 12:49:09 PM12/10/12
to python...@googlegroups.com
Olá pessoal, belezinha?

Estou começando a programar em Python (: num projeto com a Raspberry Pi.
O programa deve receber dados pela porta serial, apresentá-los em um pequeno
display e salvar em banco de dados.

Neste momento estou obtendo os dados utilizando pyserial, mas ainda estou
com duvidas a respeito do SQLite. Pelo que vi no site[1] o SQLite não suporta
totalmente chaves estrangeiras (foreign key). Então minha questão é, no que
isso influencia? Tenho como criar tabelas e relacioná-las? Como utilizar foreign keys
no SQLite?

Espero que possam dar a direção.

Abração,
deckardbot.

[1] http://www.sqlite.org/foreignkeys.html

Maxwell Morais

unread,
Dec 10, 2012, 12:55:29 PM12/10/12
to python...@googlegroups.com
Olá, Rick, tudo blz?

Então o sqlite3 suporta as funções mais básicas de ForeignKeys, como Relacionamento de tabelas, e triggers on delete e on update.
Eu utilizo o SQLite3 em uma gama significativa de meus projetos, e não tenho problemas com o relacionamento.

Basta você utilizar a sintaxe apresentada aqui http://www.sqlite.org/syntaxdiagrams.html#foreign-key-clause, que não haverá problemas, lembrando que estamos falando do SQLite3 em diante, se não me engano a partir do Python 2.5.6, o SQLite3 já está disponível.



--
------------------------------------
Grupo Python-Brasil
http://www.python.org.br/wiki/AntesDePerguntar
 
<*> Para visitar o site do grupo na web, acesse:
http://groups.google.com/group/python-brasil
 
<*> Para sair deste grupo, envie um e-mail para:
python-brasi...@googlegroups.com



--


Maxwell Morais
(+55 11) 3774-1137
 www.realizemodulados.com.br

Rick Deckard

unread,
Dec 10, 2012, 1:27:30 PM12/10/12
to python...@googlegroups.com
Maxwell, obrigado por responder.
Estou utilizando Python versão 2.7.3 e 3.2.3, então acredito que funcione sem problemas.

Valeu
deckardbot

Rick Deckard

unread,
Dec 11, 2012, 11:29:27 AM12/11/12
to python...@googlegroups.com
Olá,

Olá!

Encontrei algo útil[1]:

O SQLite a partir da versão 3.6.19 vem com suporte a foreign keys desativado
por default. Então é necessário habilitado, usando a afirmativa:
PRAGMA foreign_keys = ON;

Ou pode-se compilar o SQLite setando a flag 'SQLITE_DEFAULT_FOREIGN_KEYS' para 1.
Desta forma não precisaria ficar habilitando o suporte durante a execução.

Abraço.

[1] http://www.sqlite.org/compile.html#default_foreign_keys
--
deckardbot

Deckardbot

unread,
Dec 20, 2012, 11:40:20 AM12/20/12
to python...@googlegroups.com
Olá pessoal,

Nos meus estudos com Python e SQLite surgiu um caso com foreign key que já estou
há uns dias pesquisando e não consegui resolver. Segue o link do código:

http://bpaste.net/show/AUaGOe9VBXwQTFzPq6hC/

Na classe Employee o atributo 'self.sector' é objeto da classe 'Sector'.
No banco de dados a tabela 'employees' tem o campo 'sectorid' que é foreign key
do campo 'sectorid' da tabela 'sectors'.

Então minha duvida é:
Como cadastrar e recuperar um objeto 'employee'?
Ou melhor, como criar a classe de CRUD para 'employee'?

Obs: estou fazendo diratemente no SQLite para aprender a programar com Python.
Para software em produção a intensão é começar a usar um framework ORM :)

Espero que possam ajudar, abraço!

Att.
--
deckardbot

Maxwell Morais

unread,
Dec 20, 2012, 11:55:04 AM12/20/12
to python...@googlegroups.com
Olá @Deckardbot
Esta classe faz parte de um ORM extremamente minimalista, que eu usei por um bom tempo, ela pode te dar uma luz!


--
--
------------------------------------
Grupo Python-Brasil
http://www.python.org.br/wiki/AntesDePerguntar
 
<*> Para visitar o site do grupo na web, acesse:
http://groups.google.com/group/python-brasil
 
<*> Para sair deste grupo, envie um e-mail para:
python-brasi...@googlegroups.com
 
 
 

Deckardbot

unread,
Dec 20, 2012, 12:19:43 PM12/20/12
to python...@googlegroups.com
Fala Max,

Na verdade ja estou vendo alguns frameworks ORM, mas antes disso gostaria de criar os metodos de CRUD, na mão mesmo.
Mas de qualquer forma vou dar uma olhada no link que passou então ;)

att.
deckardbot

Maxwell Morais

unread,
Dec 20, 2012, 12:23:07 PM12/20/12
to python...@googlegroups.com
Foi justamente por isto que te encaminhei este link.

A class Model, implementa a crud, por meio dos métodos _update, _new_save, delete e get

Eu gostava deste ORM, pois estava aprendendo SQL, e ele mapeia os elementos da classe, diretamente do banco de dados, então era muito útil para eu não ter que reescrever tudo o que eu já havia definido no SQL.
Reply all
Reply to author
Forward
0 new messages