2016-08-31 29 views
0

我的選擇工作,但我的更新和刪除沒有。SQLAlchemy的使用update()函數後承諾,而使用會話

db_jb = create_engine(jb) 
self.jobs = Table('Job', MetaData(jb), autoload=True) 
# select - works 
ss = select(self.jobs).where(
    self.jobs.c.job_guid == jobGuid 
).limit(1) 
rs = ss.execute() 
rows = [r for r in rs] 
rs.close() 
# update - does not work 
su = update(self.jobs, mysql_limit=1).where(
    self.jobs.c.job_guid == jobGuid 
).values(jobStatus=status) 
# does not have an affect 
su.execution_options(autocommit=True) 
rs = su.execute() 
rs.close() 

美化的su變量和查詢是正確的,但它不是正在犯

str(su.compile(dialect=None, compile_kwargs={'literal_binds': True})) 

如何提交我的變化,而無需使用會話?

回答

1

你有沒有嘗試執行COMMIT作爲原料的語句,像

db_jb.execute('COMMIT') 

你也可以把db_jb.execute('BEGIN')只是ss = ...之前顯式啓動事務

+0

我發現我逃課我'RS = su.execute()'命令,因爲我有一個命令行開關用於調試... Doh!即使代碼正常,謝謝你回答我的問題 – SomeGuyOnAComputer