# MySQL

Esta sección explica las configuraciones básicas para establecer una conexión a una Base de Datos MySQL.

El apartado de configuraciones para las conexiones a Bases de Datos usando el BackEndBase, se encuentran en el archivo app/config/databases/settings.py, donde se especifica que conexión usar por defecto, así como los datos de la misma.

# set the Database Provider
DATABASE_PROVIDER = 'mysql'

Al usar SQLAlchemy (opens new window) como ORM, se brinda un acceso a bases de datos completo, eficiente y de alto rendimiento, adaptados al lenguaje de programación Python.

Al elegir mysql ó postgresql, El BackEndBase buscará automaticamente la configuración de para la conexión a estos motores de Bases de Datos. Puedes usar Firestore ó Cloud Datastore en este modo.

De igual manera, SQLAlchemy puede dar soporte completo a otros sistemas de bases de datos, más información por aquí. (opens new window)

Para más información consulta el módulo generic_model, que detalla el uso de los metodos disponibles.

# Entorno local

Ubicar y cambiar el valor de la variable CUSTOM_SERVER ubicada en el archivo app/config/databases/custom_servers.py

CUSTOM_SERVER = {
    'MYSQL': {
        'DB_HOST': os.environ.get('MYSQL_LOCAL_DB_HOST', 'localhost'),
        'DB_USER': os.environ.get('MYSQL_LOCAL_DB_USER', 'awesome-user'),
        'DB_PASSWD': os.environ.get('MYSQL_LOCAL_DB_PASSWD', 'awesome-password'),
        'DB_NAME': os.environ.get('MYSQL_LOCAL_DB_NAME', 'awesomedb'),
        'DB_PORT': "3306"
    },
}

Y establecer los valores apropiados.

Recuerda

Esta configuración aplica tambíen cuando el BackEndBase se ejecuta sobre un servidor personalizado ó en contenedores.

# Entorno en la nube (Google Cloud)

Ubicar y cambiar el valor de la variable APP_ENGINE ubicada en el archivo app/config/databases/google_cloud.py

APP_ENGINE = {
    'MYSQL_CLOUD': {
        'DB_HOST': "mysql+pymysql://",
        'DB_USER': "user_here",
        'DB_PASSWD': "password_here",
        'DB_NAME': "awesomedb",
        'DB_PORT': "3306",
        'PROJECT_ID': "project-name:project-zone",
        'INSTANCE_NAME': "instance-name"
    },
}

Y establecer los valores apropiados.

Por defecto Google Cloud, solo admite el usuario root y el puerto 3306.

# Esquema por defecto

El BackEndBase incluye un esquema de mySQL (opens new window) y datos de ejemplo.

El nombre por defecto para la base de datos es awesomedb y la colación es utf8_spanish_ci, más información por aquí. (opens new window)

Para empezar, crea una Base de Datos en su sevidor MySQL de nombre awesomedb y collation utf8_spanish_ci, importar los archivos:

  • tools/mysql/schemaDB/db_mysql_schema.sql
  • tools/mysql/schemaDB/initial_mysql_data.sql

en ese orden, a la nueva Base de Datos.

La información de las tablas creadas, se encuentra en los archivos anteriormente mencionados y se recomienda revisarlos para obtener una información más detallada.

# Tablas incluidas en el esquema

Revisar el archivo /tools/mysql/schemaDB/db_mysql_schema.sql para más información.

  • applications
  • auth_clients
  • auth_grants
  • auth_tokens
  • companies
  • logs
  • permissions
  • persons
  • role_permissions
  • roles
  • status
  • users

# Vistas incluidas en el esquema

Revisar el archivo /tools/mysql/schemaDB/db_mysql_schema.sql para más información.

  • view_appinfo
  • view_role_permissions
  • view_userinfo

# Información incluidas en el esquema

A continuacion se describe la información creada para las diferentes tablas, revisar el archivo /tools/mysql/schemaDB/initial_mysql_data.sql para más información.

  • status
    • Active
    • Inactive
    • Banned
  • roles
    • GOD_OF_THE_UNIVERSE
    • GENERAL_ADMINISTRATOR
    • COMPANY_OWNER
    • APPS_ADMINISTRATOR
    • USERS_ADMINISTRATOR
    • REGULAR_USER
    • ANONYMOUS_USER
  • permissions
    • OWNER
    • SECURITY_ADMIN
    • MANAGE_ROLES
    • MANAGE_PERMISSIONS
    • MANAGE_COMPANIES
    • MANAGE_APPS
    • MANAGE_CLIENTS
    • MANAGE_USERS
    • SUBSCRIBER_USER
    • UNPRIVILEGED_USER
  • applications
    • AWESOME_APP
  • auth_clients
    • client_id qKJuU2adD526AXn
    • client_secret dTsnEeQJsO4zhG7
  • auth_grants
    • auth_code zQgXnstLNpW12R615XSJdJ8sC
  • companies
    • Home Inside
  • persons
    • Lilith Doe
  • users
    • username lilith
    • password lilith_1

# Issues

Para cualquier duda, comentario, sugerencia ó aporte, dirigete a la sección de issues. (opens new window) Antes de abrir un issue nuevo, revisa los ya existentes, en busca de una solución (posiblemente ya planteada) para el problema que se te presenta.