Python: insertar datos de un archivo txt en una base de datos

CorePress2024-01-25  291

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(':'))

Su guía para un futuro mejor - libreflare
Su guía para un futuro mejor - libreflare