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.comregis@email.com>>>for user in users:... print(user.first_name, user.email)... admin@email.comRegis 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%)
python manage.py shell_plusfrom backend.bookstore.models import Customer, Orderedcustomers = 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)