Python Psycopg – Clase de cursor

La clase de cursor permite que los scripts de Python utilicen una sesión de base de datos para ejecutar comandos de PostgreSQL. La clase de conexión es lo que crea los cursores. 

método cursor(): Están permanentemente conectados a la conexión, y todas las instrucciones se ejecutan en el contexto de la sesión de la base de datos cubierta por la conexión. Los cursores generados a partir de la misma conexión no están separados, lo que significa que cualquier alteración realizada en la base de datos por un cursor es inmediatamente visible para los demás. Los cursores hechos a partir de conexiones separadas pueden aislarse o no, dependiendo de la posición de aislamiento de las conexiones.

Los cursores no son seguros para subprocesos, una aplicación multiproceso puede construir varios cursores a partir de una única conexión y cada cursor debe ser utilizado por un único subproceso. 

Crea un cursor simple:

en el siguiente código, formamos una conexión con la «base de datos del hospital» y se crea un cursor usando el método connection.cursor().

Python3

# importing packages
import psycopg2
  
# forming the connection
conn = psycopg2.connect(
    database="Hospital_database", user='postgres',
    password='pass', host='127.0.0.1', port='5432'
)
  
# Setting auto commit to True
conn.autocommit = True
  
# Creating a cursor object using the
# cursor() method
cursor = conn.cursor()

Métodos en la clase Cursor

método ejecutar():

Prepare una operación de base de datos y ejecútela (consulta o comando). Los parámetros se pueden proporcionar en forma de una serie o una asignación, y estarán vinculados a variables en la operación. Los marcadores de posición posicionales (% s) o con nombre (% (nombre) s) se utilizan para especificar variables.

Ninguno es devuelto por el método.

Sintaxis: ejecutar (operación [, parámetros])

Ejemplo:

Python3

sql = '''SELECT * FROM employee;'''
  
# executing the sql command
cursor.execute(sql)

ejecuta muchos() método:

Cree una acción de base de datos (consulta o comando) y ejecútela contra todas las tuplas o asignaciones de parámetros en una secuencia de parámetros. La función es especialmente útil para las instrucciones de actualización de la base de datos porque descarta cualquier conjunto de resultados producido por la consulta.

Sintaxis ejecutar muchos (operación, secuencia_de_parámetros)

Ejemplo:

Python3

# executing the sql statement
cursor.executemany("INSERT INTO classroom VALUES(%s,%s,%s)", 
                   values)

método fetchall():

Todas las filas (restantes) del resultado de una consulta se recuperan y se devuelven como una lista de tuplas. Si no hay más registros para buscar, se devuelve una lista vacía.

Sintaxis: cursor.fetchall()

Ejemplo:

Python3

sql = '''SELECT * FROM employee;'''
  
# executing the sql command
cursor.execute(sql)
  
# fetching all the rows
results = cursor.fetchall()
print(results)

Producción:

método fetchone():

Devuelve una sola tupla si la siguiente fila de un conjunto de resultados de consulta está disponible o Ninguno si no hay más datos disponibles.

Sintaxis: cursor.fetchone()

Ejemplo:

Python3

sql = '''SELECT * FROM employee;'''
  
# executing the sql command
cursor.execute(sql)
  
# fetching one row
result = cursor.fetchone()
  
print(result)

Producción:

método fetchmany():

Devuelve una lista de tuplas después de obtener el siguiente conjunto de filas del resultado de una consulta. si no hay más filas disponibles, se devuelve una lista en blanco.

El argumento especifica el número de filas para obtener cada llamada. El tamaño de la array del cursor especifica el número de filas que se recuperarán si no se especifica. El procedimiento debe intentar recuperar tantas filas como especifique el parámetro de tamaño.

Sintaxis: cursor. fetchmany([tamaño=cursor.tamañoarray])

Ejemplo:

El siguiente ejemplo es para obtener las dos primeras filas.

Python3

sql = '''SELECT * FROM employee;'''
  
# executing the sql command
cursor.execute(sql)
  
# fetching first two rows
result = cursor.fetchmany(2)
  
print(result)

Producción:

método callproc():

Utilice el nombre de un procedimiento de base de datos almacenado para invocarlo. Cada argumento que espera el procedimiento debe tener su propia entrada en la secuencia de parámetros. La llamada devuelve un duplicado modificado de la secuencia de entrada como resultado. Los parámetros de entrada se dejan solos, mientras que los parámetros de salida pueden reemplazarse con nuevos valores.

Sintaxis: curor.callproc(nombreproc[, parámetros])

método mogrificar():

Una vez enlazados los argumentos, se devuelve una string de consulta. La string devuelta es la misma que se envió a la base de datos si utilizó el método execute() o algo similar.

Sintaxis: cursor.mogrify(operación[, parámetros])

Ejemplo:

Python3

# cursor.mogrify() to insert multiple values
args = ','.join(cursor.mogrify("(%s,%s,%s)", i).decode('utf-8')
                for i in values)

cerrar() método:

se utiliza para cerrar el cursor. A partir de este momento, el cursor será inoperable; si se realiza alguna operación con el cursor, se generará un InterfaceError.

Sintaxis: curor.close()

Veamos el siguiente ejemplo para ver el funcionamiento completo del objeto cursor.

Se establece una conexión con la base de datos “Employee_db”. se crea un cursor utilizando el método conn.cursor(), la instrucción select SQL se ejecuta mediante el método execute() y todas las filas de la tabla se obtienen mediante el método fetchall().

Python3

# importing packages
import psycopg2
  
# establishing connection
conn = psycopg2.connect(
    database="Employee_db", user='postgres',
    password='root', host='localhost', port='5432'
)
  
# setting autocommit to True
conn.autocommit = True
  
# creating a cursor
cursor = conn.cursor()
  
sql = '''SELECT * FROM employee;'''
  
# executing the sql command
cursor.execute(sql)
  
# fetching all the rows
results = cursor.fetchall()
print(results)
  
# committing changes
conn.commit()
  
# closing connection
conn.close()

Producción:

[(1216755, ‘raj’, ‘analista de datos’, 1000000, 2, ‘1216755raj’), (1216756, ‘sarah’, ‘desarrollador de aplicaciones’, 60000, 3, ‘1216756sarah’), (1216757, ‘rishi’, ‘desarrollador web’, 60000, 1, ‘1216757rishi’), (1216758, ‘radha’, ‘analista de proyectos’, 70000, 4, ‘1216758radha’), (1216759, ‘gowtam’, ‘ml ingeniero’, 90000, 5 , ‘1216759gowtam’), (1216754, ‘rahul’, ‘desarrollador web’, 70000, 5, ‘1216754rahul’), (191351, ‘divit’, ‘100000.0’, Ninguno, Ninguno, ‘191351divit’), (191352, ‘rhea’, ‘70000.0’, Ninguno, Ninguno, ‘191352rhea’)]

Publicación traducida automáticamente

Artículo escrito por isitapol2002 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 *