Requisito previo: conectar la base de datos MySQL a Python
En este artículo, intentaremos insertar registros y verificar si EXISTE o no. La condición EXISTS en SQL se usa para verificar si el resultado de una consulta anidada correlacionada está vacío (no contiene tuplas) o no. Se puede usar para INSERTAR , SELECCIONAR, ACTUALIZAR o ELIMINAR declaraciones.
La consulta que estamos usando el programa python es:
INSERTAR EN nombre-tabla(col1, col2, col3) \
SELECCIONAR * DESDE (SELECCIONAR val1, val2, val3) como temp \
DONDE NO EXISTE \
(SELECCIONAR clave principal FROM nombre-tabla DONDE clave principal = registro insertado) LÍMITE 1
Supongamos que tenemos una base de datos llamada prueba y una tabla llamada geeksfoegeeks . A continuación se muestra el esquema y los datos de la tabla:
Dado que cada individuo tiene un número de identificación único, insertaremos registros y verificaremos el ID_NO de esa persona. Si ID_NO aún no está presente en la tabla, se insertará el registro; de lo contrario, se descartará. Entendamos usando los siguientes ejemplos:
Ejemplo 1: Cuando el registro no existe en la tabla.
Python3
# import required modules import pymysql # establish connection to MySQL connection = pymysql.connect( # specify host name host="localhost", # specify username user="root", # enter password for above user password="1234", # default port number for MySQL is 3306 port=3306, # specify database name db="test" ) # make cursor for establish connection mycursor = connection.cursor() # display records before inserting mycursor.execute("Select * from geeksfoegeeks") myresult = mycursor.fetchall() for i in myresult: print(i) # statement to insert record mycursor.execute( "Insert into geeksfoegeeks(name,address,age,mob_number,ID_NO) \ select * from( Select 'Thomas','UK',30,1892345670,'IND100') as temp \ where not exists \ (Select ID_NO from geeksfoegeeks where ID_NO='IND100') LIMIT 1") print("After inserting a record....") # print records after insertion mycursor.execute("Select * from geeksfoegeeks") myresult = mycursor.fetchall() for i in myresult: print(i) mycursor.execute("Commit") # close connection connection.close()
Producción
En el resultado anterior, pudimos ver que el registro (‘Thomas’,’UK’,30,1892345670,’IND100′) se insertó en la tabla MySQL.
Ejemplo 2: cuando el registro ya existe
A continuación se muestran el esquema y los datos de la tabla geeksdemo en la base de datos geek:
Ahora, intentaremos insertar un registro que ya existe.
Python3
# import required modules import pymysql # establish connection to MySQL connection = pymysql.connect( # specify host name host="localhost", # specify username user="root", # enter password for above user password="", # default port number for MySQL is 3306 port=3306, # specify database name db="geek" ) # make cursor for establish connection mycursor = connection.cursor() # display records before inserting mycursor.execute("Select * from geeksdemo") myresult = mycursor.fetchall() for i in myresult: print(i) # statement to insert record mycursor.execute( "Insert into geeksdemo(id,name,gender,dept) \ select * from( Select 5,'Thomas','m','information technology') as temp \ where not exists \ (Select id from geeksdemo where id=5) LIMIT 1") print("After inserting a record....") # print records after insertion mycursor.execute("Select * from geeksdemo") myresult = mycursor.fetchall() for i in myresult: print(i) mycursor.execute("Commit") # close connection connection.close()
Producción
Observamos que el registro (5,’Thomas’,’m’,’tecnología de la información’) no se insertó nuevamente en la tabla. La siguiente imagen es el resultado de la base de datos MySQL, después de ejecutar el script de Python anterior.
Podemos ver que 0 filas se vieron afectadas. Por lo tanto, no se insertó ningún registro porque ya existía en la tabla con otro registro.
Publicación traducida automáticamente
Artículo escrito por rohanchopra96 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA