Breve reseña de Bases de Datos en Debian Jessie

PostgreSQL

Como agradable sorpresa encontramos como única opción disponible en los repositorios la versión 9.4 la cual es la ultima y mas reciente versión disponible de PostgreSQL.

Comunicado de Prensa para PostgreSQL 9.4: http://www.postgresql.org/about/press/presskit94/es/

pgAdmin el cliente gráfico mas usado de PostgreSQL también lo encontramos en la ultima versión disponible para el proyecto (1.20).

phpPgAdmin también lo tenemos disponible con la ultima versión estable del proyecto

Sigue leyendo

Describe Table en SQLite + Muestra en Python

Sorprendentemente no hay describe table o show table en sqlite.

La solución es la siguiente consulta:

SELECT * FROM sqlite_master;

SELECT * FROM sqlite_master where type = ‘table’;

SELECT type,name, tbl_name FROM sqlite_master where type = ‘table’;

PRAGMA table_info(familia);

This pragma returns one row for each column in the named table. Columns in the result set include the column name, data type, whether or not the column can be NULL, and the default value for the column.

PRAGMA foreign_key_list(familia);

This pragma returns one row for each foreign key that references a column in the argument table.

http://www.sqlite.org/pragma.html

SELECT seq FROM sqlite_sequence where name = ‘familia’

SELECT seq + 1 FROM sqlite_sequence where name = ‘familia’

Fragmento de muestra en Python:

import sqlite3

db = sqlite3.connect("basededatos.db")
dbconn = db.cursor()
print "Next Value: " + str(dbconn.execute("SELECT seq FROM sqlite_sequence where name = 'familia'").fetchone()[0]+1)
print "Proximo Valor: " + str(dbconn.execute("SELECT seq + 1 FROM sqlite_sequence where name = 'familia'").fetchone()[0])</pre>

lhernandez@DskLhernandez:~$ python sqlite.py
Next Value: 64
Proximo Valor: 64

http://www.sqlite.org/sqlite.html

http://sqlite.org/lang_corefunc.html

Poblando SQLite con valores aleatorios en Python

programación lenguaje identacion python sqlite

Siguiendo esta entrada seremos capaces de poblar una tabla creada en SQLite, cuyos valores (usuario, nombre, apellido, password, cédula, fecha nacimiento, sexo, etc…) de cada campo serán generados de forma aleatoria, es decir seleccionando un valor de un arreglo o un rango determinado. El encargado de hacer todo esto será un sencillo script en python que recibe como argumento la cantidad de inserciones que le queremos realizar a la base de datos, lal cual creará el script en caso de que no exista. Este código fue escrito originalmente para probar las capacidades de carga y volumen de SQLite, fue adaptado a esta entrada con fines didácticos.

Por lo tanto esta sencilla práctica nos servirá básicamente entre otras cosas para:

  • Aprender a usar SQLite con Python (conexión, crear tabla y hacer insert).
  • Aprender a generar o seleccionar valores aleatorios con Python.
  • Aprender a pasar y recibir argumentos en un script Python.
  • Otros tips sobre Python.

 

Código Fuente


#!/usr/bin/python
# -*- coding: utf-8 -*-
# como usar: $time python test-sqlite.py 1000
import sys, datetime, sqlite3, hashlib
from random import *

db = sqlite3.connect("populate.sqlite")
dbconn = db.cursor()

crear_tabla = "CREATE TABLE IF NOT EXISTS usuarios( id_usuario INTEGER PRIMARY KEY AUTOINCREMENT UNIQUE NOT NULL, usuario varchar NOT NULL,"
crear_tabla = crear_tabla + "passwd VARCHAR NOT NULL, nombre VARCHAR NOT NULL, apellido VARCHAR NOT NULL, cedula VARCHAR NOT NULL,"
crear_tabla = crear_tabla + " fecha_nacimiento DATETIME NOT NULL, sexo char NOT NULL, perfil VARCHAR NOT NULL)"
str(dbconn.execute(crear_tabla))

list_nombre = ['Lenin','Ramiro','Alan','Rey','Elicer','Ana','Hugo','Ramon','Radames',
'Rosa','Dayana','Maria','Josefina','Pedro','Juan','Jose','Andres','Andrea']
list_apellido = ['Hernandez','Avalo','Rondon','Lima','Ponce','Gonzalez','Sifontes',
'Bello','Cardozo','Bermudez','Barreto','Fernandez','Delgado','Rodriguez']

if len(sys.argv) >= 2:
print "A continuacion se ingresaran ",sys.argv[1]," registros.";
else:
print "Este programa necesita el parametro de cantidad de registros a ingresar. Abortando Operacion.";
exit()

for i in range(int(sys.argv[1])):

fecha_nacimiento = datetime.datetime.today() - datetime.timedelta(days = randrange(1500, 25000))
nombre = choice(list_nombre)
apellido = choice(list_apellido)
cedula = str(randint(4000000, 21000000) )

sql = "INSERT INTO usuarios ('usuario','passwd','nombre', 'apellido', 'cedula', 'fecha_nacimiento', 'sexo', 'perfil') VALUES( "
sql = sql + "'" + nombre[0].lower() + apellido.lower() + "'"
sql = sql + ",'" + hashlib.md5(cedula).hexdigest() + "'"
sql = sql + ",'" + nombre +"','" + apellido + "'"
sql = sql + ",'" + cedula +  "'"
sql = sql + ",'" + fecha_nacimiento.strftime('%Y-%m-%d') + "'"
sql = sql + ",'" + choice(['M','F']) + "'"
sql = sql + ",'" + choice(['ADMIN','ANALISTA','CONSULTA']) + "')"

try:
dbconn.execute(str(sql))
print "Se ingreso correctamentente el registro Nº " + str(i+1) + ": " + nombre + " " + apellido
except:
print sql + "\n Ocurrio un error", "Guardando los datos del usuario."
exit()

db.commit()

Sigue leyendo

Clientes graficos de SQLite en Debian GNU/Linux

Complemento de Firefox SQLite Manager Gestionar cualquier base de datos SQLite en tu computadora. Tan simple como gestionar tu base de datos desde un complemento de firefox, lo que permite usar este cliente en el sistema operativo de nuestra preferencia claro si tiene firefox, iceweasel, guacharo o algun otro derivado. https://addons.mozilla.org/es-ES/firefox/addon/sqlite-manager/
SQLite Database Browser: Un sencillo y minimalista cliente gráfico para usar nuestras bases de datos SQLite. En sistemas GNU/Linux Debian o derivados bastara con un simple  #aptitude install sqlitebrowser aunque en la pagina del proyecto hay una versión mas reciente http://sourceforge.net/projects/sqlitebrowser/
SQLiteman – Haciendo las bases de datos SQLite faciles. Interfaz de usuario sencilla y comoda. En sistemas GNU/Linux Debian o derivados bastara con un simple  #aptitude install sqliteman sera suficiente para encontrar el acceso al editor en sus menus, en mi caso uso GNOME y se encuentra en el menú de Programación. La pagina del proyecto http://sqliteman.com

Existen otras alternativas gráficas para manipular SQLite en nuestros Debian, pero por ahora no empaquetadas y asumidas en los repositorios de Debían. Para todo lo demás existe la consola asegúrense de tener SQLite instalado: #aptitude install sqlite3 y luego $sqlite3 y enter para manipular por lineas de comandos.