Estoy tratando de seleccionar todos los registros de un sqlite db que tengo con sqlalchemy, ciclo sobre cada uno y hacer una actualización sobre él. Estoy haciendo esto porque necesito volver a formatear alguna vez grabar en mi columna de nombre.tabla de base de datos sqlalchemy está bloqueada
Aquí está el código que estoy utilizando para hacer una prueba sencilla:
def loadDb(name):
sqlite3.connect(name)
engine = create_engine('sqlite:///'+dbPath(), echo=False)
metadata = MetaData(bind=engine)
return metadata
db = database("dealers.db")
metadata = db.loadDb()
dealers = Table('dealers', metadata, autoload=True)
dealer = dealers.select().order_by(asc(dealers.c.id)).execute()
for d in dealer:
u = dealers.update(dealers.c.id==d.id)
u.execute(name="hi")
break
estoy recibiendo el error:
sqlalchemy.exc.OperationalError: (OperationalError) database table is locked u'UPDATE dealers SET name=? WHERE dealers.id = ?' ('hi', 1)
que soy muy nuevo en sqlalchemy y no estoy seguro de lo que significa este error o cómo solucionarlo Parece que debería ser una tarea realmente simple, así que sé que estoy haciendo algo mal.
La opción uno no funcionará ... ¿algún consejo más con la opción dos? Básicamente, estoy tratando de eliminar todos los caracteres no ascii de una de las columnas de mi DB. – imns
Asunto: "la opción uno no funcionará" ¿No puede hacer una lista desde los objetos de la base de datos seleccionados? Por qué no? – hughdbrown
Así que sé que esto es muy tarde para la fiesta, pero si las personas en el futuro se topan con esto, me parece que al cerrar todas las consolas abiertas que están accediendo a la base de datos borra este problema. – ExperimentsWithCode