我有一个SQL变量mem_dep
,当我直接在变量sql
中使用它时,它工作得非常好。它打印了正确的SQL语句,但当我在变量sql
中传递另一个变量cat
时,值为"mem_dep
",它工作得不好。它只是打印了cat
的值
mem_dep = """SELECT * FROM TABLE1 WHERE DT2_BUSINESS = '{Business_date}'"""
cob = "20223456"
cat = "mem_dep"
下面的代码工作得非常好
def calc():
sql = mem_dep.format(Business_date = cob)
print(sql)
输出:
calc() # calling function
SELECT * FROM TABLE1 WHERE DT2_BUSINESS = '20223456' # printing sql
但是如果我在一个函数中传递变量cat
,并且该变量与变量名mem_dep
具有相同的值,那么下面的代码将无法工作
def calc(cat):
sql = cat.format(Business_date = cob)
print(sql)
输出:
calc(cat) # calling function
mem_dep #printing sql
在这种情况下,如何将SQL变量作为函数中的变量传递?
我也尝试了下面的代码,但没有工作
def calc(cat):
tmp_sql = "{}".format(cat)
sql = tmp_sql.format(Business_date = cob)
print(sql)
输出:
calc(cat) # calling function
mem_dep #printing sql
预期产出:
SELECT * FROM TABLE1 WHERE DT2_BUSINESS = '20223456' # printing sql
4条答案
按热度按时间y1aodyip1#
谢谢!!!我用eval(cat)解决了这个问题
答案应该是
bwitn5fc2#
据我所知,
cat
具有包含您的SQL字符串的SQL变量的名称。并且您希望在不知道cat
的值的情况下从cat
访问SQL字符串。您可以使用getattr来实现此目的,并将所有内容 Package 在一个类中,如下所示:fhg3lkii3#
对于此输出
必须在calc()中将mem_dep作为参数提供
wz8daaqr4#
也许像这样: