Formatee SQL en Python con Mogrify de Psycopg

Psycopg, el controlador Python PostgreSQL, incluye un mecanismo muy útil para formatear SQL en python, que es mogrify. 

Después del enlace de parámetros, devuelve una string de consulta. La string devuelta es la misma que SQL fue enviada a la base de datos si usó la función ejecutar() o algo similar. Se pueden usar las mismas entradas para mogrify() que para ejecutar(), y el resultado será el esperado.

Instalación:

Necesitamos instalar el módulo psycopg2 en python para llamar a varias funciones en uso para cumplir con los requisitos.

Sintaxis:

pip install psycopg2

método cursor.mogrify():

El método cursor.mogrify() devuelve una string de consulta una vez que se han vinculado los parámetros. Si usó el método execute() o algo similar, la string devuelta es la misma que se enviaría a la base de datos. La string resultante siempre es una string de bytes, que es más rápida que usar la función executemany() .

Sintaxis:

cur.mogrify(“INSERT INTO table_name (columna) VALORES (%s, %s….)”, (value1, value2,…)(……))

Ejemplo:

Se importa el paquete psycopg2, se establece una conexión a la base de datos utilizando el método psycopg2.connection(). La confirmación automática se establece en verdadero y se crea un cursor utilizando el método conn.cursor(). Se crea una tabla en la base de datos y se usa el método cursor.mogrify() para crear un SQL formateado para insertar valores en la tabla. Cursor.mogrify() proporciona una string de bytes, pero queremos que esté en formato de string, por lo que solo necesitamos usar la técnica de decodificación (‘UTF-8’) para decodificar la salida de mogrify a una string. Los datos posteriores se recuperan mediante el método fetchall() y se confirman los cambios.

Python3

# importing packages
import psycopg2
 
# forming connection
conn = psycopg2.connect(
    database="Emp_database",
    user='postgres',
    password='pass',
    host='127.0.0.1',
    port='5432'
)
 
conn.autocommit = True
 
# creating a cursor
cursor = conn.cursor()
 
cursor.execute(
    'create table emp_table(emp_code int,\
    emp_name varchar(30), emp_salary decimal)')
 
# list of rows to be inserted
 
values = [(34545, 'samuel', 48000.0),
          (34546, 'rachel', 23232),
          (34547, 'Sean', 92000.0)]
 
# cursor.mogrify() to insert multiple values
args = ','.join(cursor.mogrify("(%s,%s,%s)", i).decode('utf-8')
                for i in values)
 
# executing the sql statement
cursor.execute("INSERT INTO emp_table  VALUES " + (args))
 
# select statement to display output
sql1 = '''select * from emp_table;'''
 
# executing sql statement
cursor.execute(sql1)
 
# fetching rows
for i in cursor.fetchall():
    print(i)
 
# committing changes
conn.commit()
 
# closing connection
conn.close()

Producción:

(34545, 'samuel', Decimal('48000.0'))
(34546, 'rachel', Decimal('23232'))
(34547, 'Sean', Decimal('92000.0'))

Publicación traducida automáticamente

Artículo escrito por sarahjane3102 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *