5
我想從sqlalchemy的sqlite數據庫中選擇所有記錄,循環遍歷每個記錄並對它進行更新。我這樣做是因爲我需要重新格式化記錄在我的名字列中。sqlalchemy數據庫表被鎖定
這裏是我使用做一個簡單的測試代碼:
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
,我發現了錯誤:
sqlalchemy.exc.OperationalError: (OperationalError) database table is locked u'UPDATE dealers SET name=? WHERE dealers.id = ?' ('hi', 1)
我很新的SQLAlchemy的,我不確定這個錯誤意味着什麼或如何解決它。這似乎應該是一個非常簡單的任務,所以我知道我做錯了什麼。
方案一不會奏效......對方案二有更多的建議嗎?基本上我只是試圖從我的數據庫的列中刪除所有非ASCII字符。 – imns 2010-08-30 03:11:25
回覆:「選項一不工作」您無法從選定的數據庫對象中創建一個列表?爲什麼不? – hughdbrown 2010-09-23 16:08:48
所以我知道這對派對來說太晚了,但是如果將來有人遇到這個問題,我發現關閉所有打開數據庫的開放式控制檯會清除這個問題。 – ExperimentsWithCode 2016-08-14 02:33:38