根本问题是如何将存储的内容(其他/早期)作为包含未翻译变量的字符串并强制python重新评估它,以便在字符串中写入的变量可以转换为它们的 - 已知值。
我有一个定义类似的变量(可能有多个版本的变量):
src_check = "SELECT daily_installs FROM mr_app WHERE report_date = '\" + row[0] + \"' AND country = '\" + row[3] + \"'"
我正在使用\“因为在那一刻,行的变量是未知的。但是,我无法弄清楚如何将它转换回文字代码,以后,以便我可以做这样的事情(在定义了所需的变量之后):
cursor.execute(code_version_of_src_check)
我试过了:
cursor.execute(src_check.replace("\"",""))
但它不会将行作为变量处理。
这是我一直遇到的问题的一个例子,并没有找到一个好的解决方案。再举一个例子,初始变量字符串将从数据库表中提取,可能类似于:
"/partitions/" + dateToCheck.strftime('%Y-%m-%d/')
这需要转换为类似“/ partitions / 2016-06-21 /”的内容,其中dateToCheck
是在从DB中提取的Python脚本中定义的。此特定示例适用于监视器。有数百行,它们在此数据字段中有各种变量,与日期相关的变量值不断变化。
我也试过使用eval()
,但是无法让它工作,当每个人只是说“不要使用它”时,很难找到它的例子,原因是这里不适用(没有外部输入/用户参与)。
(使用Python 2.7.6)
答案 0 :(得分:0)
这就是函数的用途。
def get_src_check(row):
return "SELECT daily_installs FROM mr_app WHERE report_date = '" + row[0] + "' AND country = '" + row[3] + "'"
....
row = ...
cursor.execute(get_src_check(row))
答案 1 :(得分:0)
您可以使用字符串变量运行cursor.execute。
来自django.db导入连接
cursor = connection.cursor()
src_check = str(" SELECT daily_installs FROM mr_app WHERE report_date ='" + row [0] +"' AND country ='&#34 ; + row [3] +"'")
cursor.execute(src_check)
row = cursor.fetchone()
您可以在此处找到好的示例:https://docs.djangoproject.com/en/1.9/topics/db/sql/