使用全局变量

kq4fsx7k  于 2021-06-26  发布在  Impala
关注(0)|答案(2)|浏览(476)

我在用 pymysql 打包并需要编写一个查询,该查询将获得3个表示特定日期的数字变量:年、月和日-并使用它们。
这看起来像这样:

INSERT INTO tbl1 

SELECT id, user_id, search_term
FROM main_table 
WHERE year = (var1) AND month = (var2) AND day = (var3);

INSERT INTO tbl2 

SELECT id,user_id, find_term
FROM main_table 
WHERE year = (var1) AND month = (var2) AND day = (var3);

我需要这两个insert子句使用我在执行查询之前定义的var1、var2、var3。
问题是-为了效率-我需要做同样的运行。我尝试使用(%s),但问题是python要求我提供6个参数,而不是3个。。。
有人知道这里有什么有用的吗?谢谢您!!!

bihw5rsg

bihw5rsg1#

首先-我想说它可以很好地处理1个查询。当我有2个(或更多)查询并且python认为它的变量太多时,问题就开始了。
这是密码。
此部分用于获取3个变量: yesterday = datetime.date.fromordinal(datetime.date.today().toordinal()-1) year_var = yesterday.year month_var = yesterday.month day_var = yesterday.day 此部分使用3个给定参数执行查询:
query = INSERT INTO tbl1 SELECT id, user_id, search_term FROM main_table WHERE year = %s AND month = %s AND day = %s ; INSERT INTO tbl2 SELECT id,user_id, find_term FROM main_table WHERE year = %s AND month = %s AND day = %s ; cursor.execute(query.value,(year_var, month_var, day_var )) 当我试着用2个insert子句运行脚本时,它说我有很多变量。
我需要定义某种全局变量,而不是使用%s的东西。。。
你觉得可能吗?

7fyelxc5

7fyelxc52#

可以使用python的字符串插值:

v1 = 2016
v2 = 6
v3 = 17

query = """INSERT INTO tbl1 

SELECT id, user_id, search_term
FROM main_table 
WHERE year = {var1} 
AND month = {var2} 
AND day = {var3};

INSERT INTO tbl2 

SELECT id,user_id, find_term
FROM main_table 
WHERE year = {var1} 
AND month = {var2}
AND day = {var3};""".format(var1=v1, var2=v2,var3=v3)

print(query)

相关问题