2016-08-31 9 views
0

私の選択は機能しますが、更新と削除は機能しません。セッションを使用せずにupdate()関数を使用した後のSqlAlchemyコミット

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

あなたは、私が見つけた

+0

あなたはまた、明示的にトランザクションを開始するだけでss = ...db_jb.execute('BEGIN')を置くことができ

db_jb.execute('COMMIT') 

のように、生の文としてCOMMITを実行しようとしなかった私は 'RSを飛ばしたこと=私はデバッグのためのコマンドラインスイッチを持っていたので、su.execute() 'コマンド... Doh!コードは動作しますが、私の質問に答えてくれてありがとう – SomeGuyOnAComputer

関連する問題