使用pymysql操作数据库中相关联的两张表
需求:两张表中分别有一个字段是json格式,需要往json中再插入一个属性值’container_cloud’=’fasle’。

import pymysql
import json

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()

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

利用pymysql同时修改两张表的数据的更多相关文章

  1. 关于跨DB增量(增、改)同步两张表的数据小技巧

    有些场景下,需要隔离不同的DB,彼此DB之间不能互相访问,但实际的业务场景又需要从A DB访问B DB的情形,这时怎么办?我认为有如下常规的三种方案: 1.双方提供RESET API,需要访问不同DB ...

  2. django同时查询两张表的数据,合并检索对象返回

    原始需求: 1.一篇文章内容分N个版块,每篇文章的版块数量不同. 2.有个文章搜索功能,需要同时搜索标题和内容. 实现思路: 1.由于每篇文章的内容版块数量不同,因此将每个文章的标题和内容分开存入2张 ...

  3. 【第十五篇】easyui datagrid的列编辑,同时插入两张表的数据进去

    看图说话. 需求:插入两张表,上面的表单是第一张表的内容,下面的两个表格是第二张详情表的内容,跟第一张表的id关联 第二张表有一个列是需要用户手动填写添加的. 国际惯例,上代码 <div id= ...

  4. JS之document例题讲解1(两张表之间数据转移、日期时间选择、子菜单下拉、用div做下拉菜单、事件总结)

    作业一:两个列表之间数据从一个列表移动到另一个列表 <div style="width:600px; height:500px; margin-top:20px"> & ...

  5. Oracle将两张表的数据插入第三张表且第三张表中不存在

    1.由于是先查再插所以不能使用insert into table1() values(), 要使用insert into table1() select * table2,不能使用values. 2. ...

  6. 利用SQL SERVER对比两张表的数据一致性

    CREATE TABLE [dbo].[A](    [ID] [int] NULL,    [NAME] [varchar](50) NULL,    [SEX] [varchar](50) NUL ...

  7. mysql 两张表的数据设置主外健关联删除

    image_group 主表 image 副表 alter table image add constraint fk_group_idforeign key (group_id)references ...

  8. 6.10---mybatis中两张表查询数据dao层

  9. SQLSERVER中如何快速比较两张表的不一样

    SQLSERVER中如何快速比较两张表的不一样 不知不觉要写2014年的最后一篇博文了~ 一般来说,如何检测两张表的内容是否一致,体现在复制的时候发布端和订阅端的两端的数据上面 我这里罗列了一些如何从 ...

随机推荐

  1. C语言--- 高级指针2(结构体指针,数组作为函数参数)

    一.结构体指针 1. 什么是结构体指针?指向结构体变量的指针     结构体:     typedef  struct stu{                          char name[ ...

  2. redis 无序集合 数据类型

    sadd  emptno 8000 sadd  emptno 8001 sadd  emptno 8002 smembers  emptno 返回集合全部数据 scard  获取集合长度 sismem ...

  3. __next__()

    def f1(n): m=n while True: m+=1 yield m a=f1(5) print(a.__next__()) 结果:6

  4. qt嵌入式html和本地c++通信方式

    前沿:我们在做qt项目的时候,通常会把某个html网页直接显示到应用程序中.比如绘图.直接把html形式的图标嵌入到应用程序中 但是我们需要把数据从后台c++端传到html端,实现显示.qt实现了相关 ...

  5. centos部署LVS负载均衡直接路由DR模式

    环境: 在vm里开三个虚拟机 负载调度器:10.0.3.102 真实服务器1:10.0.3.103 真实服务器2:10.0.3.104 虚拟ip: 10.0.3.99 (用来飘移) 负载调度器上 if ...

  6. Vue.nextTick 的原理和用途

    转载自https://segmentfault.com/a/1190000012861862 概览 官方文档说明: 用法: 在下次 DOM 更新循环结束之后执行延迟回调.在修改数据之后立即使用这个方法 ...

  7. 第98:svd原理

    SVD分解:任何矩阵都可以分解成第一行的形式,3个相乘.UV都是正交矩阵,中间的是奇异值. 3个相乘的形式可以拆分.即奇异值*第一行*第一列.在相加. 奇异值有时很小,在这种情况下,丢掉,可以减少计算 ...

  8. Linux目录的切换

    pwd:显示当前所在目录 ~:root目录 /:根目录 ls:查看当前目录下所有的文件和目录 cd usr 切换到该目录下usr目录 cd ../ 切换到上一层目录 cd / 切换到系统根目录 cd  ...

  9. java.lang.Object类(JDK1.7)

    1.Object的类方法 package java.lang; public class Object { private static native void registerNatives(); ...

  10. SSH整合——登录模块

    1.导包——参照我的GitHub Hibernate hibernate/lib/required hibernate/lib/jpa 数据库驱动 Struts2 struts-blank.war/W ...