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}
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:
Esto permitirá la exitosa inserción de todos los diccionarios de la lista en la tabla SQLite.