Ich versuche, alle Datensätze aus einer SQLite db ich habe mit sqlalchemy, Schleife über jede einzelne und ein Update darauf. Ich tue das, weil ich Neuformatierung jemals in meinem Namenspalte aufnehmen muss.sqlalchemy Datenbanktabelle ist gesperrt
Hier ist der Code, den ich einen einfachen Test zu tun, bin mit:
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
ich den Fehler bekommen:
sqlalchemy.exc.OperationalError: (OperationalError) database table is locked u'UPDATE dealers SET name=? WHERE dealers.id = ?' ('hi', 1)
Ich bin sehr neu nicht sqlalchemy und ich bin sicher, was dieser Fehler bedeutet oder wie es zu beheben ist. Das scheint eine wirklich einfache Aufgabe zu sein, also weiß ich, dass ich etwas falsch mache.
Option eins wird nicht funktionieren ... mehr Tipps mit Option zwei? Im Grunde versuche ich nur, alle nicht-ASCII-Zeichen aus einer meiner db-Spalten zu entfernen. – imns
Re: "Option eins wird nicht funktionieren" Sie können keine Liste aus den ausgewählten Datenbankobjekten erstellen? Warum nicht? – hughdbrown
Also ich weiß, das ist super spät auf die Party, aber wenn die Leute in Zukunft in diese geraten, fand ich das Schließen aller geöffneten Konsolen, die auf die DB zugreifen, löscht dieses Problem. – ExperimentsWithCode