-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtest_database.py
66 lines (49 loc) · 2.01 KB
/
test_database.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
# script para entender a database - nao tem nada a ver com fastapi
from sqlalchemy import create_engine, Column, String, ForeignKey
from sqlalchemy.orm import relationship, sessionmaker
from sqlalchemy.ext.declarative import declarative_base
engine = create_engine('sqlite:///data.db', echo=True)
Base = declarative_base()
# TABLES
class Autor(Base):
__tablename__ = 'autores'
cpf = Column(String, primary_key=True)
nome = Column(String)
livros = relationship('Livro', secondary='livro_autor',
back_populates='autores')
class Livro(Base):
__tablename__ = 'livros'
isbn = Column(String, primary_key=True)
titulo = Column(String)
autores = relationship(
'Autor', secondary='livro_autor', back_populates='livros')
class LivroAutor(Base):
__tablename__ = 'livro_autor'
livro_isbn = Column(String, ForeignKey('livros.isbn'), primary_key=True)
autor_cpf = Column(String, ForeignKey('autores.cpf'), primary_key=True)
Base.metadata.create_all(engine)
Session = sessionmaker(bind=engine)
session = Session()
# INSERT
autor1 = Autor(cpf='12345678901', nome='Autor 1')
autor2 = Autor(cpf='23456789012', nome='Autor 2')
livro1 = Livro(isbn='978-1234567890', titulo='Livro 1')
livro2 = Livro(isbn='978-2345678901', titulo='Livro 2')
publicacao1 = LivroAutor(livro_isbn=livro1.isbn, autor_cpf=autor1.cpf)
publicacao2 = LivroAutor(livro_isbn=livro1.isbn, autor_cpf=autor2.cpf)
session.add_all([autor1, autor2, livro1, livro2, publicacao1, publicacao2])
session.commit()
# SELECT
autores = session.query(Autor).all()
for autor in autores:
print(autor.nome) # todos os autores
livros = session.query(Livro).all()
for livro in livros:
print(livro.titulo) # todos os livros
publicacoes = session.query(LivroAutor).all()
for publicacao in publicacoes:
print(publicacao.autor_cpf) # todos os LivroAutor
autores = session.query(Autor).all()
for autor in autores:
for livro in autor.livros:
print(livro.titulo) # todos os livros de um autor omg funciona msm