我试图更熟悉占位符以便从python运行SQL命令,但无法成功传递字符命令。在这里,我将介绍一个简化的解决方案,该解决方案将被扩展。在python中,我可以使用占位符创建基本的SQL查询sql = 'SELECT * FROM schema.my_table\nLIMIT %s'
并设置为运行 Package 在函数中的命令,该函数接受SQL命令加上一个值(对行数的限制)。
def my_function(query, value):
conn=pg_engine().raw_connection()
with conn.cursor() as conn:
cursor.execute(query, value)
conn.commit()
return rowcount
例如,如果我执行my_function(sql, [10])
,它可以成功运行,但如果我尝试运行my_function(sql, ['ALL'])
,则会收到错误
类型bigint的输入语法无效
因此它显然需要一个数值;在这种情况下,是否有不同的方法来传递字符串,或者有另一种方法来解决这个问题?
谢谢
1条答案
按热度按时间mwg9r5ms1#
一个简单的例子
不过老实说,
sql.SQL
并没有逃脱。你可以得到同样的效果做:
这使用
sql.Literal
,它更安全。