我在用 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个。。。
有人知道这里有什么有用的吗?谢谢您!!!
2条答案
按热度按时间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的东西。。。
你觉得可能吗?
7fyelxc52#
可以使用python的字符串插值: