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