Python tiene varios controladores de bases de datos para PostgreSQL. La versión actual más utilizada es psycopg2. Implementa completamente la especificación Python DB-API 2.0. El psycopg2 proporciona muchas funciones útiles, como cursores del lado del cliente y del lado del servidor, notificación y comunicación asíncronas, compatibilidad con el comando COPY, etc.
Instalación
Instale el módulo psycopg2:
pip install psycopg2
Para registrar la información sobre los comandos, necesitamos instalar logtopg:
pip install logtopg
Solicitud
- Recopilación de información
- Solución de problemas
- Generando estadísticas
- Revisión de cuentas
- perfilado
Niveles de registro y su finalidad
Nivel | Objetivo |
---|---|
DEPURAR | Información detallada, normalmente de interés solo cuando se diagnostican problemas. |
INFORMACIÓN | Confirmación de que las cosas están funcionando como se esperaba. |
ADVERTENCIA | Una indicación de que sucedió algo inesperado, o indicativo de algún problema en el futuro cercano (por ejemplo, ‘espacio en disco bajo’). El software sigue funcionando como se esperaba. |
ERROR | Debido a un problema más grave, el software no ha podido realizar alguna función. |
CRÍTICO | Un error grave que indica que es posible que el programa en sí no pueda seguir ejecutándose. |
Todos los registradores son descendientes del registrador raíz . El registrador raíz siempre tiene un nivel explícito establecido, que es ADVERTENCIA de forma predeterminada. El registrador raíz se puede utilizar para activar y desactivar fácilmente todos los registradores de todas las bibliotecas.
Pantalla de información del registrador
Nivel | Monitor |
---|---|
depurar | Solo debe aparecer en el archivo. |
información | Debe aparecer en el archivo |
advertencia | Debería aparecer en el archivo y en la salida estándar. |
error | Debería aparecer en el archivo y en la salida estándar. |
crítico | Debería aparecer en el archivo y en la salida estándar. |
Para comprender mejor el registro, aquí hay un código simple sin conectarse a PostgreSQL, que solo muestra mensajes en la consola.
Ejemplo:
Python3
import logging # This will be printed only in file logging.debug('This is a debug message') # This will be printed only in file logging.info('This is an info message') logging.warning('This is a warning message') logging.error('This is an error message') logging.critical('This is a critical message')
Producción:
Se usó el registrador raíz y solo se escribieron tres mensajes. Esto se debe a que, de forma predeterminada, solo se escriben los mensajes con advertencia de nivel y superiores.
A continuación se muestra un ejemplo más para comprender los niveles de registro. El nivel de registro se establece con setLevel().
Ejemplo 1:
Python3
import logging # The getLogger() returns a logger with the specified name. # If name is None, it returns the root logger. logger = logging.getLogger('dev') # Level is set logger.setLevel(logging.DEBUG) logger.debug('This is a debug message') logger.info('This is an info message') logger.warning('This is a warning message via setLevel') logger.error('This is an error message via setLevel') logger.critical('This is a critical message via setLevel')
Producción :
Ejemplo 2:
“mylib.py” debe estar en el mismo directorio donde existe “sample.py” y también el archivo creado “myapp.log” estará presente en el mismo directorio donde están mylib.py y sample.py
mylib.py
Python3
#Let this program name be mylib.py import logging def from_mylib(): logging.info('I am from mylib')
Usemos mylib.py en otro código
muestra.py
Python3
#logging module is required to log information import logging # User created python code and should be in same directory import mylib def main(): # As we have specified myapp.log, all log information will be there # logging.INFO is the level, it will get printed logging.basicConfig(filename='myapp.log', level=logging.INFO) logging.info('Started to print logger info') # calling mylib method here as have imported. It should be # in same directory mylib.from_mylib() logging.info('Finished logging the information!!!') # Main code if __name__ == '__main__': main()
Salida de myapp.log (que se crea en el mismo directorio donde están presentes mylib.py y sample.py)
Ejemplo 3:
Este ejemplo analiza la interacción con PostgreSQL con la base de datos. pgAdmin o psql son las herramientas de cliente que se pueden usar para iniciar sesión en el servidor de base de datos PostgreSQL.
NOMBRE DE LA BASE DE DATOS: testdb
NOMBRE DE LA TABLA: empleado
Python3
import logging import psycopg2 from psycopg2.extras import LoggingConnection logging.basicConfig(level=logging.DEBUG) logger = logging.getLogger("loggerinformation") # We need to specify the necessary parameters in the below list # As connecting with postgres/password as username/password and with testdb as parameters db_settings = { "user": "postgres", "password": "password", "host": "127.0.0.1", "database": "testdb", } # connect to the PostgreSQL server conn = psycopg2.connect(connection_factory=LoggingConnection, **db_settings) conn.initialize(logger) cur = conn.cursor() cur.execute("SELECT * FROM employee")
Producción :
Ejemplo 4:
Python3
import logging import psycopg2 from psycopg2.extras import LoggingConnection logging.basicConfig(level=logging.DEBUG) logger = logging.getLogger("loggerinformation") db_settings = { "user": "postgres", "password": "password", "host": "127.0.0.1", "database": "testdb", } conn = psycopg2.connect(connection_factory=LoggingConnection, **db_settings) conn.initialize(logger) cur = conn.cursor() cur.execute("SELECT * FROM employee") # insert records in employee table cur.execute( "INSERT INTO employee (first_name,last_name,age,gender,income) VALUES ('123','456',20,'m',20000)")
Producción:
Publicación traducida automáticamente
Artículo escrito por priyarajtt y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA