execute(), executemany() y executescript()

Los métodos execute() , executemany() y executescript() son útiles para pasar ordenes SQL a la base de datos. Cada uno de ellos tiene una función diferente.

execute()

Pasa una instrucción a la base de datos. Por ejemplo, el siguiente código devuelve todos los registros de la tabla Users.

import sqlite3
import os
db = os.path.join(os.getcwd(),'test.db3')
con = sqlite3.connect(db)
cur = con.cursor()
datos = cur.execute('SELECT * FROM Users')

Si quisiéramos agregar registros a una tabla con este método, tendríamos que escribir tantas instrucciones como INSERTs. Es posible, pero existe un método mas cómodo de usar. 

executemany()

Pasa varios registros a la tabla de una base de datos con una sola instrucción. Como las filas o registros se almacenan en una tupla, para pasarlos es necesaria una lista con los registros, teniendo en cuenta que cada elemento de la lista es una tupla con los valores de los campos a pasar. Una tupla sería (‘MiNombre’,’MiEmail’).

En el siguiente ejemplo, se prepara la lista de usuarios con 3 tuplas, una por usuario con su nombre y email. Luego se realiza una consulta parametrizada usando el método executemany(). 

import sqlite3
import os
db = os.path.join(os.getcwd(),'test.db3')
conn = sqlite3.connect(db)
cur = conn.cursor()
usuarios = [
('User1','email1@email.com'),
 ('User2','email2@email.com'),
('User3','email3#email.com')]
cur.executemany('INSERT INTO Users(nombre,email) VALUES(?,?)',usuarios)

executescript()

Si lo que se necesita es poder pasar varias instrucciones a la vez a la base de datos, es necesario el uso de executescript() y añadir las instrucciones finalizadas con punto y coma (;), como en el siguiente ejemplo.

import sqlite3
import os
db = os.path.join(os.getcwd(),'test.db3')
con = sqlite3.connect(db)
cur = con.cursor()
ordenes = """
DROP TABLE IF EXISTS Users;
CREATE TABLE Users (nombre VARCHAR(128),email VARCHAR(128));
INSERT INTO Users(nombre,email) VALUES('MiNombre','MiEmail@email.com');"""
cur.executescript(ordenes)
con.commit()
cur.close()
con.close()

Si te ha servido de ayuda, invítame a un café.

Un comentario en «execute(), executemany() y executescript()»

Deja una respuesta

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