PostgreSQL conn en ChatGPT (OpenAI), Psycopg v2 o v3?
Hoy le he dado la siguiente orden a la Inteligencia Artificial ChatGPT para la creación de un broque de código: «crea codigo en python para conectarse a una base de datos postgresql y insertar datos desde un archivo csv linea por linea omitiendop el encabezado»

La IA, como en otras ocasiones, empezó a escribir el bloque de código en la ventana del chat:
import psycopg2
import csv
# Conexión a la base de datos
conn = psycopg2.connect(
host="hostname",
database="database",
user="username",
password="password"
)
cursor = conn.cursor()
# Nombre de la tabla y los nombres de las columnas que se insertarán
table_name = "table_name"
column_names = ["col_1", "col_2", "col_3"]
# Apertura del archivo CSV y lectura de datos
with open('data.csv', 'r') as file:
reader = csv.reader(file)
header = True
for row in reader:
if header:
header = False
continue
# Creación de una lista con los valores de cada columna
values = [row[0], row[1], row[2]]
# Creación de una sentencia SQL para insertar datos
sql = f"INSERT INTO {table_name} ({','.join(column_names)}) VALUES ({','.join(['%s'] * len(column_names))});"
cursor.execute(sql, values)
# Guardar los cambios y cerrar la conexión
conn.commit()
cursor.close()
conn.close()

Es un código correcto, en donde únicamente hay que considerar que se asume que el archivo CSV data.csv
tiene tres columnas y que el encabezado está en la primera línea del archivo. Se puede modificar el código según sea necesario para adaptarlo a los requisitos específicos, como son las credenciales a la base de datos, o restringir por campos el volcado de datos del CSV.
Sin embargo lo interesante es que ChatGPT recomendara, por defecto, el uso de psycopg v2 y no la version 3 del adaptador la cual tiene ya un par de años de estar disponible. Esta versión de adaptador la utilizo en la actualidad satisfactoriamente.
Psycopg 3 es un adaptador de base de datos PostgreSQL de nuevo diseño para el lenguaje de programación Python.
Psycopg 3 presenta una interfaz familiar para todos los que han utilizado Psycopg 2 o cualquier otro adaptador de base de datos DB-API 2.0, pero permite utilizar características más modernas de PostgreSQL y Python, tales como:
- Soporte asincrónico
- Compatibilidad con COPY desde objetos Python
- Un grupo de conexiones rediseñado
- Soporte para escritura estática
- Enlace de parámetros del lado del servidor
- Declaraciones preparadas
- Canalización de estados de cuenta
- Comunicación binaria
- Acceso directo a las funcionalidades libpq
Sobre el uso básico del módulo, métodos abreviados y su utilización como gestor de contexto visite >> Uso básico del módulo – documentación de psycopg 3.2.0.dev1