Skip to content

Commit 94cb274

Browse files
authored
Merge pull request #96 from macagua/2025_upgrades
2025 upgrades
2 parents f7d1c55 + 69f2970 commit 94cb274

File tree

10 files changed

+228
-77
lines changed

10 files changed

+228
-77
lines changed

recursos/leccion2/sqlacodegen/sistema/main.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,9 @@ def consulta_pedidos():
9393
try:
9494
# Crea la base de datos y tablas
9595
Base.metadata.create_all(engine)
96+
logging.info(
97+
f"✅ ¡Creación exitosa de las tablas en la base de datos '{DB_FILE}'!\n"
98+
)
9699
# Consulta de productos
97100
consulta_estados()
98101
# Consulta de ciudades
Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
# Install the sqlacodegen v3.0.0rc1 from github repo.
2-
# -e git+https://github.com/agronholm/[email protected]#egg=sqlacodegen
3-
41
# Install the packages from PyPi repository.
5-
SQLAlchemy>=2.0.23
6-
sqlacodegen==3.0.0
2+
SQLAlchemy>=2.0.23 # For the last test date, version SQLAlchemy==2.0.38 was used.
73
python-dotenv==1.0.1
4+
5+
sqlacodegen==3.0.0
6+
# Install the sqlacodegen v3.0.0rc1 from github repo.
7+
# -e git+https://github.com/agronholm/[email protected]#egg=sqlacodegen
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
### SQLite #############################
2-
DB=productos.sqlite3
2+
DB=sistema.db
File renamed without changes.

recursos/leccion2/sqlalchemy/productos/main.py renamed to recursos/leccion2/sqlalchemy/sistema/main.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ def consultar_nombre_unico():
8888
print("\n✅ ¡Consulta del único producto!")
8989
# SELECT * FROM productos WHERE categoria == "Lácteos"
9090
producto = session.query(Productos).filter_by(categoria="Líquidos").one()
91-
if len(producto) == 0:
91+
if not producto:
9292
logging.error(
9393
"❌ ERROR: ¡No hay ningún Producto de la categoria 'Líquidos' en la base de datos!"
9494
)
@@ -157,7 +157,9 @@ def eliminar_data(producto_id):
157157
Base.metadata.drop_all(engine)
158158
# Crea la base de datos y tablas
159159
Base.metadata.create_all(engine)
160-
logging.info(f"✅ ¡Creación exitosa de la tabla 'productos'!\n")
160+
logging.info(
161+
f"✅ ¡Creación exitosa de la tabla 'productos' en la base de datos '{DB_FILE}'!\n"
162+
)
161163
ingresar_data()
162164
consultar_data()
163165
consultar_id_data(1)
File renamed without changes.

recursos/leccion2/sqlalchemy/productos/requirements.txt renamed to recursos/leccion2/sqlalchemy/sistema/requirements.txt

File renamed without changes.

recursos/leccion2/sqlalchemy/productos/settings.py renamed to recursos/leccion2/sqlalchemy/sistema/settings.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
load_dotenv()
1010

1111
DB_PATH = os.path.dirname(os.path.abspath(__file__)) + os.sep
12-
DB_FILE = os.getenv("DB", "productos.sqlite3")
12+
DB_FILE = os.getenv("DB", "sistema.db")
1313

1414
engine = None
1515

source/leccion2/sqlacodegen.rst

Lines changed: 98 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ versión de :ref:`SQLAlchemy <python_sqlalchemy_modelos>`).
1818
Características
1919
---------------
2020

21-
- Soporta ``SQLAlchemy`` 0.8.x - 1.4.x.
21+
- Soporta :ref:`SQLAlchemy <python_sqlalchemy>` 0.8.x - 1.4.x.
2222

2323
- Produce código declarativo que casi parece escrito a mano.
2424

@@ -43,15 +43,15 @@ a continuación se presentan el correspondiente comando de tu sistema operativo:
4343

4444
.. code-block:: console
4545
46-
pip3 install sqlacodegen==3.0.0
46+
pip3 install sqlacodegen
4747
..
4848
pip3 install git+https://github.com/agronholm/[email protected]#egg=sqlacodegen
4949
5050
.. group-tab:: Windows
5151

5252
.. code-block:: console
5353
54-
pip3 install sqlacodegen==3.0.0
54+
pip3 install sqlacodegen
5555
5656
5757
Puede probar si la instalación se realizo correctamente, ejecutando el siguiente
@@ -75,6 +75,36 @@ comando correspondiente a tu sistema operativo:
7575
Si muestra el nombre del paquete como ``sqlacodegen``, tiene correctamente instalada
7676
la librería. Con esto, ya tiene todo listo para continuar.
7777

78+
79+
----
80+
81+
82+
Estructura de archivos
83+
^^^^^^^^^^^^^^^^^^^^^^
84+
85+
Para crear la estructura de archivos del proyecto ``sqlacodegen`` debe ejecutar los siguientes comandos:
86+
87+
Crear el directorio ``~/proyectos/sqlacodegen/sistema`` con el siguiente comando:
88+
89+
.. code-block:: console
90+
91+
mkdir -p ~/proyectos/sqlacodegen/sistema && cd $_
92+
93+
94+
El comando anterior crea la siguiente estructura de directorios:
95+
96+
.. code-block:: console
97+
:class: no-copy
98+
99+
proyectos/
100+
└── sqlacodegen/
101+
└── sistema/
102+
103+
Si tiene la estructura de archivo previa, entonces puede continuar con la siguiente sección.
104+
105+
106+
----
107+
78108
.. _python_sqlacodegen_uso:
79109

80110
Conexión al Engine
@@ -310,20 +340,21 @@ una mejor representación de los objetos.
310340
Práctica - Caso real
311341
--------------------
312342

313-
A continuación se presenta una práctica más real de implementar el uso de ``sqlacodegen``
314-
en proyectos con ``SQLAlchemy``, a continuación la estructura de proyecto llamado ``sistema``:
343+
A continuación se presenta una práctica más real de implementar el uso de proyectos
344+
con ``sqlacodegen``, a continuación la estructura de proyecto llamado ``sistema``:
315345

316346
.. code-block:: console
317347
:class: no-copy
318348
319-
sistema/
320-
├── .env.example
321-
├── __init__.py
322-
├── main.py
323-
├── models.py
324-
├── requirements.txt
325-
├── settings.py
326-
└── sistema.db
349+
proyectos/
350+
└── sqlacodegen/
351+
└── sistema/
352+
├── .env.example
353+
├── __init__.py
354+
├── main.py
355+
├── models.py
356+
├── requirements.txt
357+
└── settings.py
327358
328359
A continuación se presenta y explica el uso de cada archivo para este proyecto:
329360

@@ -361,7 +392,7 @@ Módulo principal del programa.
361392
.. literalinclude:: ../../recursos/leccion2/sqlacodegen/sistema/main.py
362393
:language: python
363394
:linenos:
364-
:lines: 1-117
395+
:lines: 1-120
365396

366397
*Archivo* :file:`requirements.txt`
367398

@@ -370,13 +401,7 @@ Archivo de `requirements.txt`_ de la herramienta de gestión de paquetes `pip`_.
370401
.. literalinclude:: ../../recursos/leccion2/sqlacodegen/sistema/requirements.txt
371402
:language: python
372403
:linenos:
373-
:lines: 1-7
374-
375-
*Archivo* :file:`sistema.db`
376-
377-
Archivo de base de datos de :ref:`SQLite <python_modulo_sqlite3>` llamado :file:`sistema.db`
378-
la cual se incluye ya que cada tiene la estructura de tablas y registros iniciales para hacer
379-
esta práctica.
404+
:lines: 1-3,5
380405

381406

382407
Teniendo creada la anterior estructura de proyecto, vuelva a ejecutar ahora el módulo con
@@ -422,6 +447,8 @@ sistema operativo:
422447
.. code-block:: console
423448
:class: no-copy
424449
450+
INFO:root:✅ ¡Creación exitosa de las tablas en la base de datos 'sistema.db'!
451+
425452
✅ Lista de 10 Estados
426453
📜 Estado: Amazonas
427454
📜 Estado: Anzoátegui
@@ -463,6 +490,29 @@ sistema operativo:
463490
464491
INFO:root:✅ ¡La conexión SQLite a la base de datos 'sistema.db' fue cerrada!
465492
493+
La ejecucion anterior generar la siguiente estructura:
494+
495+
.. code-block:: console
496+
:class: no-copy
497+
498+
proyectos/
499+
└── sqlacodegen/
500+
└── sistema/
501+
├── __init__.py
502+
├── .env
503+
├── .env.example
504+
├── main.py
505+
├── models.py
506+
├── requirements.txt
507+
├── settings.py
508+
└── sistema.db
509+
510+
*Archivo* :file:`sistema.db`
511+
512+
Archivo de base de datos de :ref:`SQLite <python_modulo_sqlite3>` llamado :file:`sistema.db`
513+
la cual no se incluye ya que cada vez que se inicia el programa :file:`main.py` se elimina y crea
514+
nuevamente, para cuidar la creación de los datos iniciales.
515+
466516
.. group-tab:: Windows
467517

468518
Antes de ejecutar debes instalar sus dependencias, con el siguiente comando:
@@ -506,6 +556,8 @@ sistema operativo:
506556
.. code-block:: console
507557
:class: no-copy
508558
559+
INFO:root:✅ ¡Creación exitosa de las tablas en la base de datos 'sistema.db'!
560+
509561
✅ Lista de 10 Estados
510562
📜 Estado: Amazonas
511563
📜 Estado: Anzoátegui
@@ -547,10 +599,33 @@ sistema operativo:
547599
548600
INFO:root:✅ ¡La conexión SQLite a la base de datos 'sistema.db' fue cerrada!
549601
602+
La ejecucion anterior generar la siguiente estructura:
603+
604+
.. code-block:: console
605+
:class: no-copy
606+
607+
proyectos/
608+
└── sqlacodegen/
609+
└── sistema/
610+
├── __init__.py
611+
├── .env
612+
├── .env.example
613+
├── main.py
614+
├── models.py
615+
├── requirements.txt
616+
├── settings.py
617+
└── sistema.db
618+
619+
*Archivo* :file:`sistema.db`
620+
621+
Archivo de base de datos de :ref:`SQLite <python_modulo_sqlite3>` llamado :file:`sistema.db`
622+
la cual no se incluye ya que cada vez que se inicia el programa :file:`main.py` se elimina y crea
623+
nuevamente, para cuidar la creación de los datos iniciales.
624+
550625

551626
Asi de esta forma puede usar ``sqlacodegen`` para generar modelos ``SQLAlchemy`` desde
552-
una base de datos existente e implementar las operaciones ingresar, consultar,
553-
actualizar y eliminar registro en las tablas.
627+
una base de datos existente e implementar las operaciones ingresar, consultar, actualizar
628+
y eliminar registro en las tablas.
554629

555630

556631
----

0 commit comments

Comments
 (0)