Estructura de un Inventario usando SQLAlchemy
Esta es la estructura de una base de datos para controlar inventario por partida doble. Esta hecha, las tablas están definidas con SQLAlchemy, por lo que podemos seleccionar el motor de base de datos que mejor nos acomode y asegurares verdadera portabilidad a nuestra apliación.
De esta manera aseguramos que con solo cambiar una línea nuestra aplicación funcionará.
Este archivo se debe tener a la mano, y si al usar la base de datos un error nos indica que las tablas no existen, entonces usamos este archivo para generarlas.
En mi caso, de manera local uso PostgreSQL y en este servidor se usa MySQL, asi que solo modifique una sola línea. El código a continuación.
#!/usr/bin/env python #-*- coding: utf-8 -*- import sqlalchemy as sql pg_db = sql.create_engine('postgres://usuario:clave@servidor:puerto/base') # my_db = sql.create_engine('mysql://usuario:clave@servidor:puerto/base') metadata = sql.BoundMetaData(pg_db) # Definicion de Tablas tblBien = sql.Table ('tblBien', metadata, sql.Column('idBien', sql.Integer, primary_key = True), sql.Column('txtBien', sql.String(25)), sql.Column('txtMarca', sql.String(25)), sql.Column('txtModelo', sql.String(30)), sql.Column('descBien', sql.String(100))) tblUbicacion = sql.Table ('tblUbicacion', metadata, sql.Column('idUbicacion', sql.Integer, primary_key= True), sql.Column('txtUbicacion', sql.String(60)), sql.Column('txtResponsable',sql.String(60)), sql.Column('descUbicacion',sql.String(100))) tblCondicion = sql.Table ('tblCondicion', metadata, sql.Column('idCondicion', sql.Integer, primary_key = True), sql.Column('txtCondicion', sql.String(20)), sql.Column('descCondicion', sql.String(100))) tblEquipo = sql.Table ('tblEquipo', metadata, sql.Column('idEquipo', sql.Integer, primary_key = True), sql.Column('idBien', sql.Integer), sql.Column('txtSerie', sql.String(30)), sql.Column('txtInventario', sql.String(40)), sql.Column('txtNacional', sql.String(40))) tblMovimiento= sql.Table ('tblMovimiento', metadata, sql.Column('idMovimiento', sql.Integer, primary_key = True), sql.Column('idBien', sql.Integer), sql.Column('idTipoMovimiento', sql.Integer), sql.Column('idUbicacion', sql.Integer), sql.Column('idCondicion', sql.Integer), sql.Column('dtFechaHora', sql.DateTime), sql.Column('descMovimiento', sql.String(100))) tblTipoMovimiento = sql.Table('tblTipoMovimiento', metadata, sql.Column('idTipoMovimiento', sql.Integer, primary_key = True), sql.Column('txtTipoMovimiento', sql.String(40)), sql.Column('descTipoMovimiento', sql.String(100))) # Creacion de Tablas tblBien.create() tblUbicacion.create() tblCondicion.create() tblEquipo.create() tblMovimiento.create() tblTipoMovimiento.create()
