-
Notifications
You must be signed in to change notification settings - Fork 873
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
addded database capabilities to template
- Loading branch information
1 parent
7a776bf
commit 17af536
Showing
5 changed files
with
173 additions
and
15 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
FROM mcr.microsoft.com/devcontainers/python:0-3.10 | ||
|
||
ENV PYTHONUNBUFFERED 1 | ||
|
||
# [Optional] If your requirements rarely change, uncomment this section to add them to the image. | ||
# COPY requirements.txt /tmp/pip-tmp/ | ||
# RUN pip3 --disable-pip-version-check --no-cache-dir install -r /tmp/pip-tmp/requirements.txt \ | ||
# && rm -rf /tmp/pip-tmp | ||
|
||
# [Optional] Uncomment this section to install additional OS packages. | ||
# RUN apt-get update && export DEBIAN_FRONTEND=noninteractive \ | ||
# && apt-get -y install --no-install-recommends <your-package-list-here> | ||
|
||
RUN apt-get update && export DEBIAN_FRONTEND=noninteractive \ | ||
&& apt-get -y install --no-install-recommends postgresql-client |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,16 +1,25 @@ | ||
// For format details, see https://aka.ms/devcontainer.json. For config options, see the | ||
// README at: https://github.com/devcontainers/templates/tree/main/src/postgres | ||
{ | ||
"image": "mcr.microsoft.com/devcontainers/python:0-3.11", | ||
"waitFor": "onCreateCommand", | ||
"onCreateCommand": "pip3 install --user -r requirements.txt", | ||
"postCreateCommand": "", | ||
"customizations": { | ||
"vscode": { | ||
"extensions": [ | ||
"ms-toolsai.jupyter", | ||
"ms-python.python", | ||
"ms-python.pylint" | ||
] | ||
} | ||
} | ||
} | ||
|
||
"name": "Python 3 & PostgreSQL", | ||
"dockerComposeFile": "docker-compose.yml", | ||
"service": "app", | ||
"workspaceFolder": "/workspaces/${localWorkspaceFolderBasename}", | ||
|
||
// Features to add to the dev container. More info: https://containers.dev/features. | ||
// "features": {}, | ||
|
||
// Use 'forwardPorts' to make a list of ports inside the container available locally. | ||
// This can be used to network with other containers or the host. | ||
"forwardPorts": [5432], | ||
|
||
"onCreateCommand": "cp -n .env.example .env", | ||
// Use 'postCreateCommand' to run commands after the container is created. | ||
// "postCreateCommand": "pip install --user -r requirements.txt", | ||
|
||
// Configure tool-specific properties. | ||
// "customizations": {}, | ||
|
||
// Uncomment to connect as root instead. More info: https://aka.ms/dev-containers-non-root. | ||
// "remoteUser": "root" | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,35 @@ | ||
version: '3.8' | ||
|
||
services: | ||
app: | ||
build: | ||
context: .. | ||
dockerfile: .devcontainer/Dockerfile | ||
|
||
volumes: | ||
- ../..:/workspaces:cached | ||
|
||
# Overrides default command so things don't shut down after the process ends. | ||
command: sleep infinity | ||
|
||
# Runs app on the same network as the database container, allows "forwardPorts" in devcontainer.json function. | ||
network_mode: service:db | ||
|
||
# Use "forwardPorts" in **devcontainer.json** to forward an app port locally. | ||
# (Adding the "ports" property to this file will not forward from a Codespace.) | ||
|
||
db: | ||
image: postgres:latest | ||
restart: unless-stopped | ||
volumes: | ||
- postgres-data:/var/lib/postgresql/data | ||
environment: | ||
POSTGRES_USER: gitpod | ||
POSTGRES_DB: sample-db | ||
POSTGRES_PASSWORD: postgres | ||
|
||
# Add "forwardPorts": ["5432"] to **devcontainer.json** to forward PostgreSQL locally. | ||
# (Adding the "ports" property to this file will not forward from a Codespace.) | ||
|
||
volumes: | ||
postgres-data: |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,88 @@ | ||
# Plantilla de Proyecto de Ciencia de Datos | ||
|
||
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. | ||
|
||
## Estructura | ||
|
||
El proyecto está organizado de la siguiente manera: | ||
|
||
- `app.py` - El script principal de Python que ejecutas para tu proyecto. | ||
- `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. | ||
- `utils.py` - Este archivo contiene código de utilidad para operaciones como conexiones de base de datos. | ||
- `requirements.txt` - Este archivo contiene la lista de paquetes de Python necesarios. | ||
- `models/` - Este directorio debería contener tus clases de modelos SQLAlchemy. | ||
- `data/` - Este directorio contiene los siguientes subdirectorios: | ||
- `interim/` - Para datos intermedios que han sido transformados. | ||
- `processed/` - Para los datos finales a utilizar para el modelado. | ||
- `raw/` - Para datos brutos sin ningún procesamiento. | ||
|
||
## Configuración | ||
|
||
**Prerrequisitos** | ||
|
||
Asegúrate de tener Python 3.11+ instalado en tu máquina. También necesitarás pip para instalar los paquetes de Python. | ||
|
||
**Instalación** | ||
|
||
Clona el repositorio del proyecto en tu máquina local. | ||
|
||
Navega hasta el directorio del proyecto e instala los paquetes de Python requeridos: | ||
|
||
```bash | ||
pip install -r requirements.txt | ||
``` | ||
|
||
**Crear una base de datos (si es necesario)** | ||
|
||
Crea una nueva base de datos dentro del motor Postgres personalizando y ejecutando el siguiente comando: `$ createdb -h localhost -U <username> <db_name>` | ||
Conéctate al motor Postgres para usar tu base de datos, manipular tablas y datos: `$ psql -h localhost -U <username> <db_name>` | ||
NOTA: Recuerda revisar la información del archivo ./.env para obtener el nombre de usuario y db_name. | ||
|
||
¡Una vez que estés dentro de PSQL podrás crear tablas, hacer consultas, insertar, actualizar o eliminar datos y mucho más! | ||
|
||
**Variables de entorno** | ||
|
||
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: | ||
|
||
```makefile | ||
DATABASE_URL="your_database_connection_url_here" | ||
``` | ||
|
||
## Ejecutando la Aplicación | ||
|
||
Para ejecutar la aplicación, ejecuta el script app.py desde la raíz del directorio del proyecto: | ||
|
||
```bash | ||
python app.py | ||
``` | ||
|
||
## Añadiendo Modelos | ||
|
||
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. | ||
|
||
Definición del modelo de ejemplo (`models/example_model.py`): | ||
|
||
```py | ||
from sqlalchemy.ext.declarative import declarative_base | ||
from sqlalchemy import Column, Integer, String | ||
|
||
Base = declarative_base() | ||
|
||
class ExampleModel(Base): | ||
__tablename__ = 'example_table' | ||
id = Column(Integer, primary_key=True) | ||
name = Column(String) | ||
|
||
``` | ||
|
||
## Trabajando con Datos | ||
|
||
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. | ||
|
||
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. | ||
|
||
## Contribuyentes | ||
|
||
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í. | ||
|
||
Otras plantillas y recursos como este se pueden encontrar en la página de GitHub de la escuela. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters