在 Python 中将 SQL 与 IBM_DB 连接器结合使用

2024-01-28

有没有人用过ibm_db使用 IBM 的 Python for PASE 打包来更新 IBM i(以前称为 AS/400)上的 Db2 文件?

我想使用 Python 脚本(来自 QSH)来更新 Db2 数据库。我的目的是在运行时填充值并更新 Db2 文件的字段。它适用于静态(硬编码)值,但不适用于动态值。

这是我正在尝试的,但它不起作用:

import ibm_db

c1 = ibm_db.connect('*LOCAL','userid','password') 
sql = """INSERT INTO TEMPLIB.TEMPPF (TYPE, DRPARTY, CRPARTY, 
                                     AMOUNT,ACNUM, DESCRIPT) 
          VALUES('%s', '%s', '%s', '%s', '%s', '%s'), 
          %(self.type, self.debitparty, self.creditparty, self.amount, 
            self.craccountnumber, self.description) with NC
      """

stmt = ibm_db.exec_immediate(c1, sql ) 
  • self.type, self.debitparty等是Python实例变量并具有值。
  • TYPE, DRPARTY, CRPARTY等是领域TEMPPF.

像下面这样填充“sql”变量之类的更简单的方法可以工作:

sql = "select * from TEMPLIB.TEMPPF"

所以在某个地方我没有正确设置 INSERT 格式。请问有人知道格式吗?我尝试了互联网上提供的几种格式,但它们与 Python 不兼容,或者它们不是很好的示例。


首先,您的字符串与模运算符的连接不正确,因为%(vars)需要驻留在要格式化的字符串之外。

其次,您应该使用 SQL 参数化(行业标准)any数据库,不仅仅是 DB2),也不是数据和查询语句的字符串插值。您可以使用ibm_db_dbi在游标中传递参数的模块execute call:

import ibm_db
import ibm_db_dbi   # ADD DBI LAYER

db = ibm_db.connect('*LOCAL','userid','password') 

# ADD FOR PYTHON STANDARD DB-API PROPERTIES (I.E., CURSOR)
conn = ibm_db_dbi.Connection(db)   
cur = conn.cursor()

# PREPARED STATEMENT (WITH PLACEHOLDERS)
sql = """INSERT INTO TEMPLIB.TEMPPF (TYPE, DRPARTY, CRPARTY, 
                                     AMOUNT, ACNUM, DESCRIPT) 
          VALUES(?, ?, ?, ?, ?, ?)
          with NC
      """

# EXECUTE ACTION QUERY BINDING PARAMS
cur.execute(sql, (self.type, self.debitparty, self.creditparty, self.amount, 
                  self.craccountnumber, self.description)) 

cur.close()
conn.close()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Python 中将 SQL 与 IBM_DB 连接器结合使用 的相关文章

  • keras 层教程和示例

    我正在尝试编码和学习不同的神经网络模型 我对输入维度有很多复杂性 我正在寻找一些教程 显示层的差异以及如何设置每个层的输入和输出 Keras 文档 https keras io layers core 向您展示所有input shape每层
  • 将嵌套循环计算转换为 Numpy 以加速

    我的Python程序的一部分包含以下代码段 其中一个新的网格 是根据旧网格中找到的数据计算的 网格是二维浮点数列表 该代码使用了三个 for 循环 for t in xrange 0 t step for h in xrange 1 hei
  • API网关+Lambda+Python:处理异常

    我正在非代理模式下从 API Gateway 调用基于 Python 的 AWS Lambda 方法 我应该如何正确处理异常 以便使用部分异常设置适当的 HTTP 状态代码以及 JSON 正文 作为示例 我有以下处理程序 def my ha
  • 用定点迭代求解该方程

    我怎样才能解这个方程 x3 x 1 0 使用定点迭代 有没有定点迭代我可以在网上找到代码 尤其是Python 吗 Using scipy optimize fixed point http docs scipy org doc scipy
  • Python gdal 未定义符号 GDALRasterBandGetVirtualMem

    我正在尝试使用Python GDAL 绑定 https pypi python org pypi GDAL 通过 pip 天真地安装绑定时 安装失败并显示错误 VSIFTruncateL 未在此范围内声明 https gis stackex
  • 从内存中发送图像

    我正在尝试为 Discord 机器人实现一个系统 该系统可以动态修改图像并将其发送给机器人用户 为此 我决定使用 Pillow PIL 库 因为它对于我的目的来说似乎简单明了 这是我的工作代码的示例 它加载一个示例图像 作为测试修改 在其上
  • 在我的 Mac 上以 root 身份运行 pip 时出现“权限被拒绝”

    我开始使用我的 Mac 来安装 Python 包 就像我在工作中使用 Windows PC 一样 然而在我的 Mac 上我经常遇到没有权限写入日志文件或站点包时出错 于是我想到了跑步pip install
  • 如何在 Django 1.4 中自定义管理过滤器

    我是 Python 和 Django 开发的新手 我从社区提供的易于阅读的示例中学到了很多东西 但最近我想为 Django 附带的管理控制台实现一个自定义的管理过滤器 我进行了很多搜索 只发现了一些过时的方法来完成它 例如 Django 1
  • Django - 该进程无法访问该文件,因为该文件正在被另一个进程使用

    我正在尝试在 Windows 10 上运行 Django 我是 Django 的新手 我正在使用 Compressor Toolkit 我的问题是 我可以运行 manage py 但本地主机说 base html 第 9 行出错该进程无法访
  • Tkinter:通过多处理启动进程会创建不需要的新窗口

    我计划围绕数值模拟编写一个小型 GUI 这就是我现在使用 Tkinter 的原因 模拟应在单独的进程中从 GUI 启动 为了玩一下 我定义了一个函数 random process 来生成成对的 randn 数字 这应该是一个真正的模拟过程
  • 我无法设置顶级标题

    我想为 TopLevel 设置标题 但 TopLevel 显示 Root 的标题 我认为我的下一个脚本与 TkInter 文档中的示例相对应 但给了我不好的结果 你能解释一下 为什么我的设置master title 顶部 in 应用程序顶部
  • 当我移动我的 pygame 角色时,它会留下痕迹[重复]

    这个问题在这里已经有答案了 我一直在尝试用 Python 制作一个游戏 但是当我移动我的角色时 它会留下痕迹 我知道它并没有显示出那么多 但如果你靠近的话 你可以看到这条踪迹 这真的让我很困扰 这是我的代码 import pygame im
  • 在 grpc python 中处理异步流请求

    我试图了解如何使用双向流处理 grpc api 使用 Python API 假设我有以下简单的服务器定义 syntax proto3 package simple service TestService rpc Translate stre
  • django 南迁移,不设置默认值

    我使用 South 来迁移我的 Django 模型 然而 南方有一个令人讨厌的错误 它不会在 Postgres 数据库中设置默认值 例子 created at models DateTimeField default datetime no
  • 了解字典的深度

    假设我们有这个字典 d a 1 b c 了解嵌套的最直接方法是什么depth of it 您需要创建一个递归函数 gt gt gt def depth d if isinstance d dict return 1 max map dept
  • Python:如何对数组 X 进行排序,但对 Y 进行相同的相对排序?

    例如 X 5 6 2 3 1 Y 7 2 3 4 6 我对X进行排序 X 1 2 3 5 6 但我希望对 Y 应用相同的相对排序 以便数字保持与以前相同的相对位置 Y 6 3 4 7 2 我希望这是有道理的 通常 你会做一个zip sort
  • (venv) (base) 都在 python 项目上活跃,我如何只进入 venv?

    所以我将 vscode 与 conda 对于 django 项目 一起使用 并尝试激活名为 venv 的虚拟环境 它来自 base C Users User Desktop pfa master pfa master venv Script
  • 有没有比 Python 内置 == 运算符更快的方法来测试两个列表是否具有完全相同的元素?

    如果我有两个列表 每个列表有 800 个元素长并填充整数 有没有比使用内置元件更快的方法来比较它们具有完全相同的元件 如果没有 则短路 操作员 a 6 2 3 88 54 486 b 6 2 3 88 54 486 a b gt gt gt
  • 在 python 中使用 re.sub 将字母变成大写?

    在许多编程语言中 以下内容 find foo a z bar并替换为GOO U 1GAR 将导致整个匹配项变为大写 我似乎无法在 python 中找到等效项 它存在吗 您可以将函数传递给re sub http docs python org
  • *Python 内的 Kaggle API 文档?

    我想写一个python从 Kaggle com 下载公共数据集的脚本 Kaggle API 是用 python 编写的 但是我能找到的几乎所有文档和资源都是关于如何在命令行中使用该 API 的 而关于如何使用kaggle图书馆内python

随机推荐

  • Delphi - Graphics32,绘制抗锯齿圆角矩形

    如何使用 Graphics32 绘制抗锯齿圆角矩形 我设法在 bitmap32 画布上使用 TPolygon 制作了一个普通矩形 但我找不到任何绘制圆角的参考 希望有一些代码 function GetRoundedFixedRectangl
  • 致命:提交时无法解析 HEAD 错误

    每当我尝试提交工作时 都会收到此错误 fatal could not parse HEAD 如果我想保留我的更改 该怎么办 你知道什么分行吗HEAD应该指向 是吗master Run git symbolic ref HEAD refs h
  • Concourse:通过 HTTP 请求触发作业

    我正在尝试使用 Git 服务器上的 Web 挂钩触发 Concourse 作业 按照此Github 上的问题 https github com concourse concourse issues 331我找到了一个端点定义 https g
  • 谁能告诉我为什么我的算法是错误的?

    我正在研究单源最短路径问题 我对 bfs 进行了修改 可以解决该问题 该算法运行时间为 O 2E 次 我只是不明白为什么它是错误的 一定是这样 否则 dijstra 不会是最有效的算法 def bfs modified G src des
  • Cocos2d 游戏中的碰撞检测?

    我正在尝试检测碰撞 of two sprites按照以下方式 但是当我尝试运行游戏时没有发生碰撞 我可能做错了什么 void update ccTime dt CGRect projectileRect CGRectMake project
  • MongoDB:启动期间无法设置套接字

    我有 Windows 8 1 Enterprise 64 位机器 我已经为 Windows 安装了带有 SSL 支持的 mongodb msi 我创建了环境设置所需的所有必要条件 现在使用命令提示符导航到 mongodb 安装文件夹中的 b
  • 取消订阅 Single 的正确方法是什么[重复]

    这个问题在这里已经有答案了 我想做一些短暂的延迟后 public void notifyMe Single timer 500 TimeUnit MILLISECONDS subscribeOn Schedulers io subscrib
  • Rails 3.2.13 recognize_path 返回约束的路由错误

    我的路线中有两条路径 相同的路径指向不同的控制器和操作 match id gt users show as gt user constraints gt UserConstraint match id gt customers show a
  • 无法使用 ARIMA 预测下一个值:输入包含 NaN、无穷大或对于 dtype('float64') 来说太大的值

    我有以下代码片段 import pmdarima as pmd ts 3 86 5 52 68 14 20 12 22 4 2 model pmd auto arima ts start p 1 start q 1 test adf est
  • DTMF Goertzel 算法不起作用

    因此 我正在打开我在 audacity 中生成的 DTMF 音调的 raw 文件 我抓住了一个类似于维基百科文章中的罐装 goertzel 算法 但它似乎无法解码正确的数字 解码后的数字也会根据我传递给算法的 N 值而变化 据我了解 较高的
  • 生成随机数的div

    我无法让脚本创建随机数量的 div 在这个具体示例中 介于 5 和 20 之间 问题可能出在 for 循环中 生成随机数的函数在随机颜色函数下面正常工作 我猜由于某些原因它没有被识别 另外我在萤火虫中没有收到任何错误 Example fun
  • 调用 addAction 时删除通知?

    我在通知中添加了两个操作按钮 当我单击其中任何一个时 它们会执行所需的操作 但通知仍保留在我的通知抽屉中 我知道单击操作按钮时可以从通知抽屉中删除通知 因为这就是 Gmail 的功能 如果我单击主通知 它将打开应用程序并从通知抽屉中删除通知
  • 课程。重点是什么?

    我对 PHP 中的 OOP 相当陌生 我编写了几个基本脚本 但没有什么令人印象深刻的 我真正从中得到的只是 制作一组函数可能会更容易 include them 类的结构似乎只是混淆了原本简单的过程 将所有内容整理到一个类中并没有真正添加任何
  • 如何从文件中提取文本行?

    我有一个充满文件的目录 我需要从中提取页眉和页脚 它们的长度都是可变的 因此使用头部或尾部是行不通的 每个文件都有一行我可以搜索 但我不想在结果中包含该行 通常是 Start more text here 并结束于 Finish more
  • elixir+hex - ranch_proxy_protocol ssl:ssl_accept 3 已弃用,出现十六进制错误

    enter code here我正在以下命令运行 mix ecto create mix ecto migrate 这给出了一个错误 gt Compiling ranch proxy protocol gt Compiling src ra
  • javax.ws.rs.ProcessingException,在 Payara Server 5 中找不到内容类型 application/json 类型的 writer

    first Sorry for my bulky source code and simple question 我收到这个错误 javax ws rs ProcessingException RESTEASY003215 找不到内容类型应
  • Mockito 测试 void 方法抛出异常

    我有一个方法void返回类型 它还可能引发许多异常 因此我想测试引发的这些异常 所有尝试都失败了 原因相同 Stubber 类型中的方法 when T 不适用于参数 void 有什么想法如何让方法抛出指定的异常吗 doThrow new E
  • 使用 Boto3 列出所有“活动”EMR 集群

    我正在尝试使用 boto3 列出 EMR 上的所有活动集群 但我的代码似乎不起作用 它只是返回 null 我正在尝试使用 boto3 来做到这一点 1 列出所有活动的EMR集群 aws emr list clusters active 2
  • 谷歌翻译 API 之间的区别

    我正在构建一个基于 Google 翻译的开源 Chrome 扩展 here https github com MagTun Customizable Google Translate Chrome extension blob master
  • 在 Python 中将 SQL 与 IBM_DB 连接器结合使用

    有没有人用过ibm db使用 IBM 的 Python for PASE 打包来更新 IBM i 以前称为 AS 400 上的 Db2 文件 我想使用 Python 脚本 来自 QSH 来更新 Db2 数据库 我的目的是在运行时填充值并更新