在 Python 中为 Oracle 选择查询绑定变量
Posted
技术标签:
【中文标题】在 Python 中为 Oracle 选择查询绑定变量【英文标题】:Bind variables for Oracle select Query in Python 【发布时间】:2019-04-16 05:24:46 【问题描述】:我正在尝试为 Oracle 数据库执行 select 语句。在我的选择语句中,我不需要直接给出表名,而是从复选框中检索它并在查询中给出它。尝试了一些代码,但最终出现错误...请在下面找到我的代码
if self.checkbox.isChecked():
Text = self.checkbox.text
self.cur.execute(“select * from :tblmn”,(text))
print(cur)
连接和游标已经定义但没有在上面的代码中指定。请帮我解决这个问题。谢谢
【问题讨论】:
Binding variable to table name with cx_Oracle的可能重复 【参考方案1】:这基本上是this问题的解决方案组合。您不能使用绑定表名,但可以通过字符串格式化来完成,这会增加 SQL 注入的风险。为避免这种情况,您可以使用 DBMS_ASSERT oracle 包,该包具有可以抛出的函数如果它不是有效的数据库对象 (dbms_assert.sql_object_name
),则可能需要处理。
假设您使用的是 cx_Oracle,
cur = conn.cursor()
my_tabname = cur.callfunc('sys.dbms_assert.sql_object_name'
, cx_Oracle.STRING, ['employees'])
cur.execute("SELECT * from tablename".format(tablename=my_tabname))
for line in cur:
print(line)
【讨论】:
以上是关于在 Python 中为 Oracle 选择查询绑定变量的主要内容,如果未能解决你的问题,请参考以下文章