Quiero que 3 columnas tengan 9 valores diferentes, como una lista en Python. ¿Es posible? Si no está en SQLite, ¿en otro motor de base de datos?¿Es posible guardar una lista de valores en una columna de SQLite?
Respuesta
Debe serializar la lista (u otro objeto de Python) en una cadena de bytes, también conocida como "BLOB" ;-), a través de sus medios favoritos (marshal
es bueno para listas de valores elementales como números o cadenas & c, cPickle
si desea una solución muy general, etc.) y deserializarlo cuando lo recupere. Por supuesto, que, básicamente, lleva la lista (o cualquier otro objeto de Python) como una "carga útil" pasiva - no se puede utilizar de manera significativa en WHERE
cláusulas, ORDER BY
, etc.
simplemente no se ocupan del todo bien con valores no atómicos y preferiría otras alternativas normalizadas (almacene los elementos de la lista en una tabla diferente que incluya una columna "listID", coloque el "listID" en su tabla principal, etc.). Las bases de datos no relacionales, aunque típicamente tienen limitaciones con las relacionales (por ejemplo, sin uniones), pueden ofrecer un soporte más directo para sus necesidades.
Algunos DB relacionales tienen extensiones no relacionales. Por ejemplo, PostGreSQL admite un tipo de datos array (no tan general como las listas de Python, las matrices de PgSQL son intrínsecamente homogéneas).
En general, esto se hace mediante una cadena de la lista (con repr()), y luego guardando la cadena. Al leer la cadena de la base de datos, use eval() para volver a crear la lista. Tenga cuidado, aunque está seguro de que ningún dato generado por el usuario puede entrar en la columna, o el eval() es un riesgo de seguridad.
Su pregunta es difícil de entender. Aquí está de nuevo:
Quiero que 3 columnas tengan 9 valores diferentes, como una lista en Python. ¿Es posible? Si no está en SQLite, ¿en otro motor de base de datos?
Esto es lo que creo que está preguntando: ¿es posible tomar una lista de Python de 9 valores diferentes, y guardar los valores debajo de una columna en particular en una base de datos?
La respuesta a esta pregunta es "sí". Sugiero usar una biblioteca ORM de Python en lugar de tratar de escribir el código SQL usted mismo. Este código de ejemplo utiliza Autumn:
import autumn
import autumn.util
from autumn.util import create_table
# get a database connection object
my_test_db = autumn.util.AutoConn("my_test.db")
# code to create the database table
_create_sql = """\
DROP TABLE IF EXISTS mytest;
CREATE TABLE mytest (
id INTEGER PRIMARY KEY AUTOINCREMENT,
value INTEGER NOT NULL,
UNIQUE(value)
);"""
# create the table, dropping any previous table of same name
create_table(my_test_db, _create_sql)
# create ORM class; Autumn introspects the database to find out columns
class MyTest(autumn.model.Model):
db = my_test_db
lst = [3, 6, 9, 2, 4, 8, 1, 5, 7] # list of 9 unique values
for n in lst:
row = MyTest(value=n) # create MyTest() row instance with value initialized
row.save() # write the data to the database
ejecutar este código, a continuación, salga de Python y correr sqlite3 my_test.db
. A continuación, ejecute este comando SQL dentro de SQLite: select * from mytest;
Aquí está el resultado:
1|3
2|6
3|9
4|2
5|4
6|8
7|1
8|5
9|7
En este ejemplo se tira de los valores de una lista, y utiliza los valores para rellenar una columna de la base de datos. Podría ampliarse trivialmente para agregar columnas adicionales y llenarlas también.
Si esta no es la respuesta que está buscando, vuelva a formular su pedido para aclarar.
P.S. Este ejemplo usa autumn.util
. El setup.py
incluido con la versión actual de otoño no instala util.py
en el lugar correcto; Tendrás que terminar la instalación de Autumn a mano.
Puede usar un ORM más maduro como SQLAlchemy o el ORM de Django. Sin embargo, realmente me gusta Autumn, especialmente para SQLite.
- 1. SQLite Select DISTINCT Valores de una columna sin pedido
- 2. ¿Es posible recortar todos los valores en una columna en una sola instrucción?
- 3. En Oracle, ¿es posible "insertar" una columna en una tabla?
- 4. Ruby: Es una cadena en una lista de valores
- 5. Guardar ArrayLists en bases de datos SQLite
- 6. ¿Es posible concatenar valores de columna en una cadena usando CTE?
- 7. Crear un hoja.de.datos en una columna es una lista
- 8. crear una columna indexada en sqlite
- 9. ¿Es posible guardar un gráfico de Google como una imagen?
- 10. ¿Es posible poner una lista dentro de una etiqueta span?
- 11. ¿Es posible guardar un Tipo (usando "typeof()") en una enumeración?
- 12. ¿Cómo agregar una nueva columna en una vista en sqlite?
- 13. ¿Es posible eliminar duplicados de una lista ordenada en menos de O (n) tiempo?
- 14. R: guardar ggplot2 gráficas en una lista
- 15. sqlite: cómo rellenar una nueva columna con valores una vez que se ha agregado una nueva columna?
- 16. ¿Es posible crear una lista expandible AlertDialog?
- 17. comparando una columna con una lista de valores en t-sql
- 18. Determinar el tipo de datos de una columna en SQLite
- 19. Obtenga una lista de valores distintos en la Lista
- 20. Filtrar una trama de datos por valores en una columna
- 21. ¿Es posible obtener una lista de palabras clave en Python?
- 22. ¿Es una buena columna para una mesa de columna?
- 23. Cómo concatenar/unir cadenas de una columna agrupada en SQLite?
- 24. SQLite: acumulador (suma) de columna en una instrucción SELECT
- 25. Guardar una lista de cadenas únicas en el ArrayList
- 26. seleccionar un elemento de una columna personalizada de una lista
- 27. ¿Insertar valores múltiples en una columna mysql?
- 28. ¿Es posible actualizar elementos dentro de una lista (de estructura)?
- 29. seleccionar valores únicos de una columna
- 30. ¿Cómo resembrar una columna de incremento automático en una base de datos SQLite?
gracias.Creo que rediseñaré mi base de datos para tener una tabla separada, ya que necesito poder usar los valores en una cláusula 'WHERE'. – john2x