Estoy intentando insertar todas las líneas de un archivo txt, en el formato nombre:edad por separado en la base de datos.
Esto es lo que he probado:
with open('test.txt') as f:
reader = csv.reader(f)
for row in reader:
mycursor.execute("INSERT INTO test (name, age) VALUES (%s, %s)")
Archivo de texto:
Adam:23
Olivia:19
Mark:45
Robert:34
Markus:23
Por favor, ayúdame a resolver esto, o al menos dame una pista, soy nuevo en la programación.
Entonces, ¿cuál es tu pregunta?
- ThePyGuy
28/03/2021 a las 16:20
Si pudieras ayudarme :)
-Natalia Brzowinska
28/03/2021 a las 16:25
------------------------------------
agefile = open("text.txt", "r")
sql = "INSERT INTO test (nick, ip) VALUES (%s, %s)"
for row in agefile:
data = row.split(':')
val = (data[0], data[1])
mycursor.execute(sql, val)
agefile.close()
2
¡Gracias! Funciona, pero cuando lo reviso en la base de datos contiene '\n' al final ('1.1.1.1\n',)
&Dakota del Norteceniza; Natalia Brzowinska
28/03/2021 a las 16:43
@NataliaBrzowinska Para eliminar \n al final del código en lugar de datos[1], utilice datos[1].rstrip().
-Arty
28/03/2021 a las 16:45
------------------------------------
Tu código está bien, solo necesitas insertar el valor tupla en la consulta.
mycursor.execute("INSERT INTO test (name, age) VALUES (%s, %s)" %tuple(row.split(':'))
O
será aún mejor si separas tu consulta de los datos
query = "INSERT INTO test (name, age) VALUES (%s, %s)"
with open('test.txt') as f:
reader = csv.reader(f)
for row in reader:
mycursor.execute(query, %tuple(row.split(':'))