利用pymysql同時修改兩張表的數據

使用pymysql操做數據庫中相關聯的兩張表
需求:兩張表中分別有一個字段是json格式,須要往json中再插入一個屬性值’container_cloud’=’fasle’。mysql

import pymysql
import jsonsql

db = pymysql.connect("host","user","password","dbname")
cursor1 = db.cursor()  #操做第一張表
cursor2 = db.cursor()  #操做第二張表
try:
#經過第一張表,查詢出須要修改的字段,和第二張表相關聯的字段
cursor1.execute("select id,resc_metadata,apply_id from approvedresc_rescdetail where resource_type='Job';")
values = cursor1.fetchall()
for id,resc_metadata,apply_id in values:
resc_metadata = json.loads(resc_metadata)
if resc_metadata.get('container_cloud') == None:
resc_metadata['container_cloud']='false'
resc_metadata = json.dumps(resc_metadata)
sql_approved = "update approvedresc_rescdetail set resc_metadata=%s where id=%s;"
cursor1.execute(sql_approved,(resc_metadata,id))

sql_apply1 = "select resc_metadata from apply_rescdetail where id=%s;"
cursor2.execute(sql_apply1, [apply_id])
value = cursor2.fetchone()
apply_resc_metadata = json.loads(value[0])
if apply_resc_metadata.get('container_cloud') == None:
apply_resc_metadata['container_cloud']='false'
apply_resc_metadata = json.dumps(apply_resc_metadata)
sql_apply2 = "update apply_rescdetail set resc_metadata=%s where id=%s;"
cursor2.execute(sql_apply2,(apply_resc_metadata,apply_id))
print(id,apply_id)
db.commit()
except Exception as e:
print('error:',e)
db.rollback(http://www.amjmh.com/v/BIBRGZ_558768/)
cursor2.close()
cursor1.close()
db.close()數據庫

---------------------

json

相關文章
相關標籤/搜索