Skip to content

Commit 17af536

Browse files
committed
addded database capabilities to template
1 parent 7a776bf commit 17af536

File tree

5 files changed

+173
-15
lines changed

5 files changed

+173
-15
lines changed

.devcontainer/Dockerfile

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
FROM mcr.microsoft.com/devcontainers/python:0-3.10
2+
3+
ENV PYTHONUNBUFFERED 1
4+
5+
# [Optional] If your requirements rarely change, uncomment this section to add them to the image.
6+
# COPY requirements.txt /tmp/pip-tmp/
7+
# RUN pip3 --disable-pip-version-check --no-cache-dir install -r /tmp/pip-tmp/requirements.txt \
8+
# && rm -rf /tmp/pip-tmp
9+
10+
# [Optional] Uncomment this section to install additional OS packages.
11+
# RUN apt-get update && export DEBIAN_FRONTEND=noninteractive \
12+
# && apt-get -y install --no-install-recommends <your-package-list-here>
13+
14+
RUN apt-get update && export DEBIAN_FRONTEND=noninteractive \
15+
&& apt-get -y install --no-install-recommends postgresql-client

.devcontainer/devcontainer.json

Lines changed: 24 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,25 @@
1+
// For format details, see https://aka.ms/devcontainer.json. For config options, see the
2+
// README at: https://github.com/devcontainers/templates/tree/main/src/postgres
13
{
2-
"image": "mcr.microsoft.com/devcontainers/python:0-3.11",
3-
"waitFor": "onCreateCommand",
4-
"onCreateCommand": "pip3 install --user -r requirements.txt",
5-
"postCreateCommand": "",
6-
"customizations": {
7-
"vscode": {
8-
"extensions": [
9-
"ms-toolsai.jupyter",
10-
"ms-python.python",
11-
"ms-python.pylint"
12-
]
13-
}
14-
}
15-
}
16-
4+
"name": "Python 3 & PostgreSQL",
5+
"dockerComposeFile": "docker-compose.yml",
6+
"service": "app",
7+
"workspaceFolder": "/workspaces/${localWorkspaceFolderBasename}",
8+
9+
// Features to add to the dev container. More info: https://containers.dev/features.
10+
// "features": {},
11+
12+
// Use 'forwardPorts' to make a list of ports inside the container available locally.
13+
// This can be used to network with other containers or the host.
14+
"forwardPorts": [5432],
15+
16+
"onCreateCommand": "cp -n .env.example .env",
17+
// Use 'postCreateCommand' to run commands after the container is created.
18+
// "postCreateCommand": "pip install --user -r requirements.txt",
19+
20+
// Configure tool-specific properties.
21+
// "customizations": {},
22+
23+
// Uncomment to connect as root instead. More info: https://aka.ms/dev-containers-non-root.
24+
// "remoteUser": "root"
25+
}

.devcontainer/docker-compose.yml

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
version: '3.8'
2+
3+
services:
4+
app:
5+
build:
6+
context: ..
7+
dockerfile: .devcontainer/Dockerfile
8+
9+
volumes:
10+
- ../..:/workspaces:cached
11+
12+
# Overrides default command so things don't shut down after the process ends.
13+
command: sleep infinity
14+
15+
# Runs app on the same network as the database container, allows "forwardPorts" in devcontainer.json function.
16+
network_mode: service:db
17+
18+
# Use "forwardPorts" in **devcontainer.json** to forward an app port locally.
19+
# (Adding the "ports" property to this file will not forward from a Codespace.)
20+
21+
db:
22+
image: postgres:latest
23+
restart: unless-stopped
24+
volumes:
25+
- postgres-data:/var/lib/postgresql/data
26+
environment:
27+
POSTGRES_USER: gitpod
28+
POSTGRES_DB: sample-db
29+
POSTGRES_PASSWORD: postgres
30+
31+
# Add "forwardPorts": ["5432"] to **devcontainer.json** to forward PostgreSQL locally.
32+
# (Adding the "ports" property to this file will not forward from a Codespace.)
33+
34+
volumes:
35+
postgres-data:

README.es.md

Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
# Plantilla de Proyecto de Ciencia de Datos
2+
3+
Esta plantilla está diseñada para impulsar proyectos de ciencia de datos proporcionando una configuración básica para conexiones de base de datos, procesamiento de datos, y desarrollo de modelos de aprendizaje automático. Incluye una organización estructurada de carpetas para tus conjuntos de datos y un conjunto de paquetes de Python predefinidos necesarios para la mayoría de las tareas de ciencia de datos.
4+
5+
## Estructura
6+
7+
El proyecto está organizado de la siguiente manera:
8+
9+
- `app.py` - El script principal de Python que ejecutas para tu proyecto.
10+
- `explore.py` - Un notebook para que puedas hacer tus exploraciones, idealmente el codigo de este notebook se migra hacia app.py para subir a produccion.
11+
- `utils.py` - Este archivo contiene código de utilidad para operaciones como conexiones de base de datos.
12+
- `requirements.txt` - Este archivo contiene la lista de paquetes de Python necesarios.
13+
- `models/` - Este directorio debería contener tus clases de modelos SQLAlchemy.
14+
- `data/` - Este directorio contiene los siguientes subdirectorios:
15+
- `interim/` - Para datos intermedios que han sido transformados.
16+
- `processed/` - Para los datos finales a utilizar para el modelado.
17+
- `raw/` - Para datos brutos sin ningún procesamiento.
18+
19+
## Configuración
20+
21+
**Prerrequisitos**
22+
23+
Asegúrate de tener Python 3.11+ instalado en tu máquina. También necesitarás pip para instalar los paquetes de Python.
24+
25+
**Instalación**
26+
27+
Clona el repositorio del proyecto en tu máquina local.
28+
29+
Navega hasta el directorio del proyecto e instala los paquetes de Python requeridos:
30+
31+
```bash
32+
pip install -r requirements.txt
33+
```
34+
35+
**Crear una base de datos (si es necesario)**
36+
37+
Crea una nueva base de datos dentro del motor Postgres personalizando y ejecutando el siguiente comando: `$ createdb -h localhost -U <username> <db_name>`
38+
Conéctate al motor Postgres para usar tu base de datos, manipular tablas y datos: `$ psql -h localhost -U <username> <db_name>`
39+
NOTA: Recuerda revisar la información del archivo ./.env para obtener el nombre de usuario y db_name.
40+
41+
¡Una vez que estés dentro de PSQL podrás crear tablas, hacer consultas, insertar, actualizar o eliminar datos y mucho más!
42+
43+
**Variables de entorno**
44+
45+
Crea un archivo .env en el directorio raíz del proyecto para almacenar tus variables de entorno, como tu cadena de conexión a la base de datos:
46+
47+
```makefile
48+
DATABASE_URL="your_database_connection_url_here"
49+
```
50+
51+
## Ejecutando la Aplicación
52+
53+
Para ejecutar la aplicación, ejecuta el script app.py desde la raíz del directorio del proyecto:
54+
55+
```bash
56+
python app.py
57+
```
58+
59+
## Añadiendo Modelos
60+
61+
Para añadir clases de modelos SQLAlchemy, crea nuevos archivos de script de Python dentro del directorio models/. Estas clases deben ser definidas de acuerdo a tu esquema de base de datos.
62+
63+
Definición del modelo de ejemplo (`models/example_model.py`):
64+
65+
```py
66+
from sqlalchemy.ext.declarative import declarative_base
67+
from sqlalchemy import Column, Integer, String
68+
69+
Base = declarative_base()
70+
71+
class ExampleModel(Base):
72+
__tablename__ = 'example_table'
73+
id = Column(Integer, primary_key=True)
74+
name = Column(String)
75+
76+
```
77+
78+
## Trabajando con Datos
79+
80+
Puedes colocar tus conjuntos de datos brutos en el directorio data/raw, conjuntos de datos intermedios en data/interim, y los conjuntos de datos procesados listos para el análisis en data/processed.
81+
82+
Para procesar datos, puedes modificar el script app.py para incluir tus pasos de procesamiento de datos, utilizando pandas para la manipulación y análisis de datos.
83+
84+
## Contribuyentes
85+
86+
Esta plantilla fue construida como parte del [Data Science and Machine Learning Bootcamp](https://4geeksacademy.com/us/coding-bootcamps/datascience-machine-learning) de 4Geeks Academy por [Alejandro Sanchez](https://twitter.com/alesanchezr) y muchos otros contribuyentes. Descubre más sobre [los programas BootCamp de 4Geeks Academy](https://4geeksacademy.com/us/programs) aquí.
87+
88+
Otras plantillas y recursos como este se pueden encontrar en la página de GitHub de la escuela.

README.md

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ This boilerplate is designed to kickstart data science projects by providing a b
77
The project is organized as follows:
88

99
- `app.py` - The main Python script that you run for your project.
10+
- `explore.py` - A notebook to explore data, play around, visualize, clean, etc. Ideally the notebook code should be migrated to the app.py when moving to production.
1011
- `utils.py` - This file contains utility code for operations like database connections.
1112
- `requirements.txt` - This file contains the list of necessary python packages.
1213
- `models/` - This directory should contain your SQLAlchemy model classes.
@@ -32,6 +33,16 @@ Navigate to the project directory and install the required Python packages:
3233
pip install -r requirements.txt
3334
```
3435

36+
**Create a database (if needed)**
37+
38+
Create a new database within the Postgres engine by customizing and executing the following command: `$ createdb -h localhost -U <username> <db_name>`
39+
Connect to the Postgres engine to use your database, manipulate tables and data: `$ psql -h localhost -U <username> <db_name>`
40+
NOTE: Remember to check the ./.env file information to get the username and db_name.
41+
42+
Once you are inside PSQL you will be able to create tables, make queries, insert, update or delete data and much more!
43+
44+
**Environment Variables**
45+
3546
Create a .env file in the project root directory to store your environment variables, such as your database connection string:
3647

3748
```makefile

0 commit comments

Comments
 (0)