参数数目可变的pymysql select-in

2024-06-16 12:11:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我读了几个例子,展示了pymysql“select-in”应该如何工作。所以,这个例子很好:

 sql_select = 'SELECT a.user_id, AVG(a.rcount) AS \'average\' ' \
                 'FROM (SELECT user_id, item_id, count(*) AS rcount ' \
                 'FROM submission AS qsm ' \
                 'JOIN metadata as qm   ' \
                 'ON qsm.item_id = qm.id ' \
                 'WHERE qsm.item_id NOT IN (1, 2, 5, 6, 7, 147, 148) ' \
                 'AND DATE(FROM_UNIXTIME(submission_time)) BETWEEN %s AND %s ' \
                 'AND qm.type != \'survey\' ' \
                 'GROUP BY user_id, item_id ' \
                 'ORDER BY user_id) a ' \
                 'GROUP BY a.user_id'
    args = [course_start, course_end]
    cur.execute(sql_select, args)

但是,我还要为这个“不在”部分添加另一个论点。这里的问题是这个列表是可变的,所以不太确定如何处理这个列表。在


Tags: andfromidsubmissionsqlbyasitem
1条回答
网友
1楼 · 发布于 2024-06-16 12:11:46

使用PyMySQL 0.7.9版:

cells = ('cell_1', 'cell_2')
cursor.execute('select count(*) from instance where cell_name in %(cell_names)s;', {'cell_names': cells})
# or alternately
cursor.execute('select count(*) from instance where cell_name in %s;', [cells])

PyMySQLexecute文档描述了两种可能的形式:

^{pr2}$

相关问题 更多 >