【问题标题】:How to use two variables in one SQL statement?如何在一条 SQL 语句中使用两个变量?
【发布时间】:2020-01-22 09:31:38
【问题描述】:

我遇到了关于 SQL 和 Python 的问题。

在我的代码中,我尝试使用输入字段搜索两个元素。它是CommercialCodeItemNumberItemNumber 的这段代码工作得很好(只是最后一部分很重要):

SQL_Query = pd.read_sql_query("Select top 1 UnitWeight, GlobalItemDescription.ItemNumber, GlobalItemDescription.Description,  GlobalItemMaster_new.CommodityCode, CommercialCode, GlobalItemMaster_new.DRICode  from dbo.GlobalItemDescription inner join dbo.GlobalItemMaster_new on GlobalItemDescription.ItemNumber = GlobalItemMaster_new.ItemNumber where dbo.GlobalItemDescription.ItemNumber like '%s'" % eingabe, conn)

但实际上我想要这样:

SQL_Query = pd.read_sql_query("Select top 1 UnitWeight, GlobalItemDescription.ItemNumber, GlobalItemDescription.Description,  GlobalItemMaster_new.CommodityCode, CommercialCode, GlobalItemMaster_new.DRICode  from dbo.GlobalItemDescription inner join dbo.GlobalItemMaster_new on GlobalItemDescription.ItemNumber = GlobalItemMaster_new.ItemNumber where dbo.GlobalItemDescription.ItemNumber like '%s' OR dbo.GlobalItemMaster_new.CommercialCode like '%s'" % eingabe, eingabe2,conn)

当我执行上面的代码时,我得到了这个错误:

TypeError: 格式字符串的参数不足

【问题讨论】:

标签: python sql


【解决方案1】:

你必须使用paranthesis,所以它应该是% (eingabe, eingabe2)而不是% eingabe, eingabe2

 SQL_Query = pd.read_sql_query("Select top 1 UnitWeight, GlobalItemDescription.ItemNumber, GlobalItemDescription.Description,  GlobalItemMaster_new.CommodityCode, CommercialCode, GlobalItemMaster_new.DRICode  from dbo.GlobalItemDescription inner join dbo.GlobalItemMaster_new on GlobalItemDescription.ItemNumber = GlobalItemMaster_new.ItemNumber where dbo.GlobalItemDescription.ItemNumber like '%s' OR dbo.GlobalItemMaster_new.CommercialCode like '%s'" % (eingabe, eingabe2),conn)

【讨论】:

  • 这个答案提供了允许 SQL 注入的安全问题。
  • 但是这个答案回答了OP的问题。问题是关于“如何在一个 SQL 语句中使用两个变量”,错误是“TypeError:格式字符串的参数不足”
  • 我不知道为什么,但是我的程序被这个解决方案冻结了
猜你喜欢
  • 1970-01-01
  • 2013-04-03
  • 1970-01-01
  • 1970-01-01
  • 2011-01-12
  • 1970-01-01
  • 2021-03-21
  • 2022-12-21
相关资源
最近更新 更多