python传递参数给sql_python-如何在SQLAlchemy Core中将列名作为参数传递?
我有一个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中将列名作为参数传递?相关推荐
- python传递参数给sql_Python MySQLdb 执行sql语句时的参数传递方式
使用MySQLdb连接数据库执行sql语句时,有以下几种传递参数的方法. 1.不传递参数 conn = MySQLdb.connect(user="root",passwd=&qu ...
- Python传递参数,包裹传递
Python传递参数,包裹传递 包裹传递.这种情况适用于,不知道函数要接收多少个参数的情况. 在定义函数时,我们有时候并不知道调用的时候会传递多少个参数.这时候,包裹(packing)位置参数,或者包 ...
- python传递参数格式_Python语言学习基础篇之Python发送Post请求之根据参数位置传参、数据类型、不同方式传参...
本文主要介绍了Python语言学习基础篇之Python发送Post请求之根据参数位置传参.数据类型.不同方式传参,通过具体的内容向大家展现,希望对大家Python语言的学习有所帮助. 目录 一.验证 ...
- python传递参数 调用c++ 传递vector_python调用c++传递数组的实例
如下所示: INPUT = c_int * 4 # 实例化一个长度为2的整型数组 input = INPUT() # 为数组赋值(input这个数组是不支持迭代的) input[0] = 11 inp ...
- Python传递参数的5种方式
一.位置传参 # 位置传递实例: def fun1(a,b,c):return a+b+cprint(fun1(1,2,3)) 输出: 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) --> ...
- python传中文参数_解决Python传递中文参数的问题
今天有个需要需要传递中文参数给URL 但是在GBK环境下的脚本传递GBK的参数老是给我报UNICODE的解码错误.烦的很. 所以我们果断选择用urlencode来处理中文, 由于国内外网站编码不同,国 ...
- python传入参数的几种方法_python传递参数方式小结
本文实例总结了python传递参数方式.分享给大家供大家参考.具体分析如下: 当形参如*arg时表示传入数组,当形参如**args时表示传入字典. 输出: python中定义一个函数,可以通过正常的只 ...
- python获取当前进程id_Python进程,多进程,获取进程id,给子进程传递参数操作示例...
本文实例讲述了Python进程,多进程,获取进程id,给子进程传递参数操作.分享给大家供大家参考,具体如下: 线程与线程之间共享全局变量,进程之间不能共享全局变量. 进程与进程相互独立 (可以通过s ...
最新文章
- 使用计算机辐射最大,计算机辐射的主要来源及其对人体的危害
- 华为硬件笔试 通用器件知识2_华为硬件笔试题(最新版)
- 使用IBMMQ时的那些事
- vue组件间的传值方式及方法调用汇总
- Tomcat设置Http自动跳转Https
- android ipc简单理解,Android IPC 机制【1】--简介
- 通达信缠论买卖点公式_通达信缠论多空主图指标公式
- 简单的python流回显服务器与客户端
- 【飞秋】基于Html5的Canvas实现的Clocks (钟表)
- PDF Expert使用教程:如何在Mac上使用PDF Expert编辑PDF
- 8 QM配置-质量计划配置-维护检验计划的号码范围
- jdk和jre是什么?都有什么用?
- e-mobile帐号状态存在异常_Java 常见异常种类
- 获取浏览器高度_鸡哥解读FILECOIN浏览器之幸运值
- java 二分查找_Java数组之Arrays方法
- @程序员,使用了 SQL 就不能用 DevOps?
- 基于用户画像的在线健康社区用户流失预测研究
- android居中代码,android 设置textView水平居中显示?
- 即将来临的Rails 4.0将放弃Ruby 1.8支持,改进后台任务、缓存等多项内容
- mysql memory leak,项目在Tomcat中启动出现内存泄露memory leak
热门文章
- Error message COM_PRODUCT 503 Data cannot be maintained for set type COM_TA_R3_ID
- Vue compile - Vue中的双大括号 {{ 是如何被解析(parse)的
- jMeter工具里左边树形结构里一些节点属性的介绍
- SAP Marketing Cloud的技术架构
- python 螺旋数组_LeetCode54,螺旋矩阵,一题学会一个重要技巧
- 数据库压测 oracle,sysbench压测Oracle
- 【信息系统项目管理师】常用网络标准与网络协议
- linux有关网络服务的接口,linux系统有关网络服务接口定义是哪个?
- Python部署与安装
- go语言第一个程序-hello world