我有一个sqlalchemy核心批量更新查询,我需要以编程方式传递要更新的列的名称.

该函数如下所示,其中包含每个变量的注释:

def update_columns(table_name, pids, column_to_update):

'''

1. table_name: a string denoting the name of the table to be updated

2. pid: a list of primary ids

3. column_to_update: a string representing the name of the column that will be flagged. Sometimes the name can be is_processed or is_active and several more other columns. I thus need to pass the name as a parameter.

'''

for pid in pids:

COL_DICT_UPDATE = {}

COL_DICT_UPDATE['b_id'] = pid

COL_DICT_UPDATE['b_column_to_update'] = True

COL_LIST_UPDATE.append(COL_DICT_UPDATE)

tbl = Table(table_name, meta, autoload=True, autoload_with=Engine)

trans = CONN.begin()

stmt = tbl.update().where(tbl.c.id == bindparam('b_id')).values(tbl.c.column_to_update==bindparam('b_column_to_update'))

trans.commit()

table参数被接受并且可以正常工作.

作为参数传递时,column_to_update不起作用.它失败,并出现错误引发AttributeError(key)AttributeError:column_to_mark.但是,如果我对列名进行了硬编码,则查询将运行.

如何传递column_to_update的名称以供SQLAlchemy识别?

编辑:最终脚本

感谢@Paulo,最终脚本如下所示:

def update_columns(table_name, pids, column_to_update):

for pid in pids:

COL_DICT_UPDATE = {}

COL_DICT_UPDATE['b_id'] = pid

COL_DICT_UPDATE['b_column_to_update'] = True

COL_LIST_UPDATE.append(COL_DICT_UPDATE)

tbl = Table(table_name, meta, autoload=True, autoload_with=Engine)

trans = CONN.begin()

stmt = tbl.update().where(

tbl.c.id == bindparam('b_id')

).values(**{column_to_update: bindparam('b_column_to_update')})

CONN.execute(stmt, COL_LIST_UPDATE)

trans.commit()

python传递参数给sql_python-如何在SQLAlchemy Core中将列名作为参数传递?相关推荐

  1. python传递参数给sql_Python MySQLdb 执行sql语句时的参数传递方式

    使用MySQLdb连接数据库执行sql语句时,有以下几种传递参数的方法. 1.不传递参数 conn = MySQLdb.connect(user="root",passwd=&qu ...

  2. Python传递参数,包裹传递

    Python传递参数,包裹传递 包裹传递.这种情况适用于,不知道函数要接收多少个参数的情况. 在定义函数时,我们有时候并不知道调用的时候会传递多少个参数.这时候,包裹(packing)位置参数,或者包 ...

  3. python传递参数格式_Python语言学习基础篇之Python发送Post请求之根据参数位置传参、数据类型、不同方式传参...

    本文主要介绍了Python语言学习基础篇之Python发送Post请求之根据参数位置传参.数据类型.不同方式传参,通过具体的内容向大家展现,希望对大家Python语言的学习有所帮助. 目录 一.验证 ...

  4. python传递参数 调用c++ 传递vector_python调用c++传递数组的实例

    如下所示: INPUT = c_int * 4 # 实例化一个长度为2的整型数组 input = INPUT() # 为数组赋值(input这个数组是不支持迭代的) input[0] = 11 inp ...

  5. Python传递参数的5种方式

    一.位置传参 # 位置传递实例: def fun1(a,b,c):return a+b+cprint(fun1(1,2,3)) 输出: 6 二.关键字传参 根据每个参数的名字写入函数参数 # 关键字传 ...

  6. 注意python函数参数的可变变量的传递

    1 def function(p): 2     p.append(4) 3     return 4 5 a = [1,2,3] 6 function(a) 7  8 print(a) --> ...

  7. python传中文参数_解决Python传递中文参数的问题

    今天有个需要需要传递中文参数给URL 但是在GBK环境下的脚本传递GBK的参数老是给我报UNICODE的解码错误.烦的很. 所以我们果断选择用urlencode来处理中文, 由于国内外网站编码不同,国 ...

  8. python传入参数的几种方法_python传递参数方式小结

    本文实例总结了python传递参数方式.分享给大家供大家参考.具体分析如下: 当形参如*arg时表示传入数组,当形参如**args时表示传入字典. 输出: python中定义一个函数,可以通过正常的只 ...

  9. python获取当前进程id_Python进程,多进程,获取进程id,给子进程传递参数操作示例...

    本文实例讲述了Python进程,多进程,获取进程id,给子进程传递参数操作.分享给大家供大家参考,具体如下: 线程与线程之间共享全局变量,进程之间不能共享全局变量. 进程与进程相互独立  (可以通过s ...

最新文章

  1. 使用计算机辐射最大,计算机辐射的主要来源及其对人体的危害
  2. 华为硬件笔试 通用器件知识2_华为硬件笔试题(最新版)
  3. 使用IBMMQ时的那些事
  4. vue组件间的传值方式及方法调用汇总
  5. Tomcat设置Http自动跳转Https
  6. android ipc简单理解,Android IPC 机制【1】--简介
  7. 通达信缠论买卖点公式_通达信缠论多空主图指标公式
  8. 简单的python流回显服务器与客户端
  9. 【飞秋】基于Html5的Canvas实现的Clocks (钟表)
  10. PDF Expert使用教程:如何在Mac上使用PDF Expert编辑PDF
  11. 8 QM配置-质量计划配置-维护检验计划的号码范围
  12. jdk和jre是什么?都有什么用?
  13. e-mobile帐号状态存在异常_Java 常见异常种类
  14. 获取浏览器高度_鸡哥解读FILECOIN浏览器之幸运值
  15. java 二分查找_Java数组之Arrays方法
  16. @程序员,使用了 SQL 就不能用 DevOps?
  17. 基于用户画像的在线健康社区用户流失预测研究
  18. android居中代码,android 设置textView水平居中显示?
  19. 即将来临的Rails 4.0将放弃Ruby 1.8支持,改进后台任务、缓存等多项内容
  20. mysql memory leak,项目在Tomcat中启动出现内存泄露memory leak

热门文章

  1. Error message COM_PRODUCT 503 Data cannot be maintained for set type COM_TA_R3_ID
  2. Vue compile - Vue中的双大括号 {{ 是如何被解析(parse)的
  3. jMeter工具里左边树形结构里一些节点属性的介绍
  4. SAP Marketing Cloud的技术架构
  5. python 螺旋数组_LeetCode54,螺旋矩阵,一题学会一个重要技巧
  6. 数据库压测 oracle,sysbench压测Oracle
  7. 【信息系统项目管理师】常用网络标准与网络协议
  8. linux有关网络服务的接口,linux系统有关网络服务接口定义是哪个?
  9. Python部署与安装
  10. go语言第一个程序-hello world