docker-compose up -d
docker container exec -it dicas_de_django_db psql
\l # lista os bancos
\c dicas_de_django_db # conecta em dicas_de_django_db
\dt # lista as tabelas
SELECT first_name, last_name, email FROM accounts_user;
SELECT * FROM accounts_user;
\q # sair
>>> users = User.objects.values('first_name', 'last_name', 'email')
>>> users
<QuerySet [{'first_name': '', 'last_name': '', 'email': 'admin@email.com'}, {'first_name': 'Regis', 'last_name': 'Santos', 'email': 'regis@email.com'}]>
>>> print(users.query)
SELECT "accounts_user"."first_name", "accounts_user"."last_name", "accounts_user"."email" FROM "accounts_user"
>>> users = User.objects.all()
>>> users
<QuerySet [<User: admin@email.com>, <User: regis@email.com>]>
>>> for user in users:
... print(user)
...
admin@email.com
regis@email.com
>>> for user in users:
... print(user.first_name, user.email)
...
admin@email.com
Regis regis@email.com
E agora vamos aplicar um filtro.
>>> user = User.objects.filter(email__icontains='regis').values('first_name', 'email')
>>> user
<QuerySet [{'first_name': 'Regis', 'email': 'regis@email.com'}]>
>>> print(user.query)
SELECT "accounts_user"."first_name", "accounts_user"."email" FROM "accounts_user" WHERE UPPER("accounts_user"."email"::text) LIKE UPPER(%regis%)
Criando uma nova app
Vamos criar uma nova app chamada bookstore.
cd backend
python ../manage.py startapp bookstore
cd ..
python manage.py shell_plus
from backend.bookstore.models import Customer, Ordered
customers = Customer.objects.all()
for customer in customers:
print(customer)
ordereds = Ordered.objects.all()
for ordered in ordereds:
print(ordered)
PostgreSQL e pgAdmin no Docker
Vamos usar o PostgreSQL rodando no Docker.
docker-compose up -d
Podemos ver tudo pelo pgAdmin, ou
docker container exec -it dicas_de_django_db psql
As tabelas
\c dicas_de_django_db # conecta no banco dicas_de_django_db
\dt # mostra todas as tabelas
Os registros
SELECT * FROM bookstore_ordered;
id | status | created | customer_id
----+--------+------------------------+-------------
1 | p | 1976-01-05 07:04:10+00 | 1
2 | p | 2021-02-09 06:08:27+00 | 3
3 | p | 1986-08-13 02:54:02+00 | 1
Schema
SELECT column_name, data_type FROM information_schema.columns WHERE TABLE_NAME = 'bookstore_ordered';
column_name | data_type
-------------+--------------------------
id | bigint
created | timestamp with time zone
customer_id | bigint
status | character varying
(4 rows)