El adaptador de base de datos psycopg se utiliza para conectarse con el servidor de base de datos PostgreSQL a través de python.
Instalando psycopg:
Primero, use la siguiente línea de comando desde la terminal:
pip install psycopg
Si ha descargado el paquete fuente en su computadora, puede usar setup.py de la siguiente manera:
python setup.py build sudo python setup.py install
Crear una nueva base de datos
Primero, inicie sesión en el servidor de la base de datos PostgreSQL usando cualquier herramienta de cliente como pgAdmin o psql.
En segundo lugar, use la siguiente declaración para crear una nueva base de datos denominada proveedores en el servidor de base de datos de PostgreSQL.
CREATE DATABASE suppliers;
Conéctese a la base de datos PostgreSQL usando psycopg2
Para conectarse a la base de datos de proveedores, utilice la función connect() del módulo psycopg2.
La función connect() crea una nueva sesión de base de datos y devuelve una nueva instancia de la clase de conexión. Al usar el objeto de conexión, puede crear un nuevo cursor para ejecutar cualquier instrucción SQL.
Para llamar a la función connect(), especifique los parámetros de la base de datos de PostgreSQL como una string de conexión y páselo a la función de esta manera:
conn = psycopg2.connect("dbname=suppliers user=postgres password=postgres")
O puede usar una lista de argumentos de palabras clave:
conn = psycopg2.connect( host="localhost", database="suppliers", user="postgres", password="Abcd1234")
La siguiente es la lista de los parámetros de conexión:
base de datos: el nombre de la base de datos que desea conectar.
usuario: el nombre de usuario utilizado para autenticarse.
contraseña: contraseña utilizada para autenticarse.
host: dirección del servidor de la base de datos, por ejemplo, localhost o una dirección IP.
puerto: el número de puerto que por defecto es 5432 si no se proporciona.
Para hacerlo más conveniente, puede usar un archivo de configuración para almacenar todos los parámetros de conexión.
A continuación se muestra el contenido del archivo database.ini:
[postgresql] host=localhost database=suppliers user=postgres password=SecurePas$1
Mediante el uso de database.ini, puede cambiar los parámetros de conexión de PostgreSQL cuando mueve el código al entorno de producción sin modificar el código.
Tenga en cuenta que si usa git, debe agregar la base de datos.ini al archivo .gitignore para no enviar la información confidencial al repositorio público como github. El archivo .gitignore será así:
database.ini
La siguiente función config() lee el archivo database.ini y devuelve los parámetros de conexión. La función config() se coloca en el archivo config.py:
#!/usr/bin/python from configparser import ConfigParser def config(filename='database.ini', section='postgresql'): # create a parser parser = ConfigParser() # read config file parser.read(filename) # get section, default to postgresql db = {} if parser.has_section(section): params = parser.items(section) for param in params: db[param[0]] = param[1] else: raise Exception('Section {0} not found in the {1} file'.format(section, filename)) return db
La siguiente función connect() se conecta a la base de datos de proveedores e imprime la versión de la base de datos de PostgreSQL.
#!/usr/bin/python import psycopg2 from config import config def connect(): """ Connect to the PostgreSQL database server """ conn = None try: # read connection parameters params = config() # connect to the PostgreSQL server print('Connecting to the PostgreSQL database...') conn = psycopg2.connect(**params) # create a cursor cur = conn.cursor() # execute a statement print('PostgreSQL database version:') cur.execute('SELECT version()') # display the PostgreSQL database server version db_version = cur.fetchone() print(db_version) # close the communication with the PostgreSQL cur.close() except (Exception, psycopg2.DatabaseError) as error: print(error) finally: if conn is not None: conn.close() print('Database connection closed.') if __name__ == '__main__': connect()
Cómo funciona.
Primero, lea los parámetros de conexión de la base de datos del archivo database.ini.
A continuación, cree una nueva conexión de base de datos llamando a la función connect().
Luego, cree un nuevo cursor y ejecute una instrucción SQL para obtener la versión de la base de datos de PostgreSQL.
Después de eso, lea el conjunto de resultados llamando al método fetchone() del objeto del cursor.
Finalmente, cierre la comunicación con el servidor de la base de datos llamando al método close() del cursor y los objetos de conexión.
Ejecute el archivo connect.py
Para ejecutar el archivo connect.py, utiliza el siguiente comando:
python connect.py
Verá el siguiente resultado:
Connecting to the PostgreSQL database... PostgreSQL database version: ('PostgreSQL 12.3, compiled by Visual C++ build 1914, 64-bit', ) Database connection closed.
Solución de problemas
La función connect() lanza la excepción DatabaseError si ocurre un error. Para ver cómo funciona, puede cambiar los parámetros de conexión en el archivo base de datos.ini.
Por ejemplo, si cambia el host a localhosts, el programa generará el siguiente mensaje:
Connecting to the PostgreSQL database... could not translate host name "localhosts" to address: Unknown host
Lo siguiente muestra un mensaje de error cuando cambia la base de datos a una base de datos que no existe, por ejemplo, proveedor:
Connecting to the PostgreSQL database... FATAL: database "supplier" does not exist
Si cambia el usuario a postgress, no se autenticará correctamente de la siguiente manera:
Connecting to the PostgreSQL database... FATAL: password authentication failed for user "postgress"
Publicación traducida automáticamente
Artículo escrito por imabadassbabua y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA