diff --git a/README.md b/README.md index 4014fab..1df247b 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,9 @@ Materiales para el taller *Bases de datos en un contexto FOSS - Una introducció ``` - `assets/`. Carpeta con las imágenes usadas en las diapositivas. - `code/`. Carpeta con el código de ejemplo para el taller: - - `code/example.sql`. *Dump* de una base de datos mínima, para ilustrar operaciones muy básicas. + - `code/example.sql`. *Dump* de una base de datos mínima, para tener algo que explorar. + - `code/query_version.py`. Script para conectarse a una base de datos PostgreSQL y obtener la información sobre su versión actual. + - `code/config.ini`. Fichero auxiliar para el script anterior, con los parámetros de la conexión a PostgreSQL. ## Licencia diff --git a/code/config.ini b/code/config.ini new file mode 100644 index 0000000..9aaf1d0 --- /dev/null +++ b/code/config.ini @@ -0,0 +1,6 @@ +[database] +name = taller_postgres +user = postgres +password = foss +host = localhost +port = 5432 \ No newline at end of file diff --git a/code/query_version.py b/code/query_version.py new file mode 100644 index 0000000..c66fbf8 --- /dev/null +++ b/code/query_version.py @@ -0,0 +1,40 @@ +import configparser +import psycopg2 + +configfile = configparser.ConfigParser() +configfile.read('config.ini') + +config = configfile['database'] + +print("Connecting to database...") +with psycopg2.connect( + database=config['name'], + user=config['user'], + password=config['password'], + host=config['host'], + port=config['port'] + ) as connection: + + print("Connected to %s:%s (%s) as %s" % (config['host'], config['port'], config['name'], config['user'])) + + print("Querying PostgreSQL version...") + + with connection.cursor() as cursor: + query = "SELECT version();" + cursor.execute(query) + + print("Results:") + rows = cursor.fetchall() + for row in rows: + print("->", *row) + + # Si estuvieramos modificando datos con + # cursor.execute(...) + # sería necesario hacer commit de los cambios: + # cursor.commit() + +# Al manejar la conexión y el cursor mediante contextos, +# estos se cierran automáticamente. De otro modo, lo +# correcto habría sido hacer cursor.close() y connection.close() +print("Done!") +