es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cuando intento convertir una lista de diccionarios de Python en una tabla de SQLite, sigo obteniendo un error.

Estoy intentando convertir una lista de diccionarios de Python en una tabla SQLite, utilizando el siguiente código.

conn = sqlite3.connect('stockData.db')
c = conn.cursor()
c.executemany("INSERT INTO AAPL1M2021 (time,open,high,low,close,volume) VALUES (%(t)s,%(o)s,%(h)s,%(l)s,%(c)s,%(v)s)", data)

Cada vez que ejecuto este código, devuelve el siguiente error.

OperationalError                          Traceback (most recent call last)
<ipython-input-7-dce4eb1e6f6f> in <module>
      2 conn = sqlite3.connect('stockData.db')
      3 c = conn.cursor()
----> 4 c.executemany("INSERT INTO AAPL1M2021 (time,open,high,low,close,volume) VALUES (%(t)s,%(o)s,%(h)s,%(l)s,%(c)s,%(v)s)", data)

OperationalError: near "%": syntax error

Debo estar omitiendo algo porque no puedo encontrar una solución.

Aquí tienes un ejemplo de diccionario de la lista de diccionarios.
python
{'v': 26666, 'vw': 133.233, 'o': 133.31, 'c': 133.49, 'h': 133.49, 'l': 133.02, 't': 1609750800000, 'n': 87}

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    El mensaje de error muestra que hay un error de sintaxis cerca del símbolo “%”. Esto podría ser causado por el uso de la sintaxis incorrecta para los marcadores de posición de parámetros en la consulta SQL. En lugar de utilizar %(key)s, que es la sintaxis para el formateo de cadenas en Python, la consulta SQL debería utilizar “?” como marcador de posición de parámetro.

    El código corregido sería:

    conn = sqlite3.connect('stockData.db')
    c = conn.cursor()
    c.executemany("INSERT INTO AAPL1M2021 (time,open,high,low,close,volume) VALUES (?, ?, ?, ?, ?, ?)", data)
    

    Esto permitirá la exitosa inserción de todos los diccionarios de la lista en la tabla SQLite.

Comments are closed.