python pymysql占位符在(set)查询中使用while列中断

k5hmc34c  于 2021-06-23  发布在  Mysql
关注(0)|答案(0)|浏览(215)

我使用pymysql查询mysql数据库使用占位符。效果很好。我有一个查询引发了一个警告,因为在将参数加载到查询中时字符串的处理方式是:
我的示例代码:

thing_ids = "1, 2, 3, 4"
list_notes = db_get_list("SELECT n.note_id, n.note_info, ... FROM note n, contact c WHERE n.note_created_by=c.contact_id AND n.note_on_thing_id IN (%s)", (thing_ids, ))

db\u get\u列表是:

def db_get_list(self, sql, args=None):
    with self.connection.cursor() as cursor:
        cursor.execute(sql, args)
        return cursor.fetchall()

提出的警告是:

/Library/Python/2.7/site-packages/pymysql/cursors.py:323: 
Warning: (1292, u"Truncated incorrect DOUBLE value: '1, 2, 3, 4'")

我在控制台上用mysql做了一些调试。运行查询结束时:

WHERE .... AND n.note_on_thing_id IN ('1, 2, 3, 4')

我收到警告了。运行查询结束时:

WHERE .... AND n.note_on_thing_id IN (1, 2, 3, 4)

(没有引号)没有警告。
如何将参数传递给cursor.execute(),并在本例中要求它不要用“引号” Package 查询(每隔一次传递时与今天一样!)。
我在文档中看到了其他%选项,例如%d、%g-但是这些选项似乎只在变量是整数类型而不是字符串类型时才起作用。字符串将始终是一个包含逗号分隔整数的字符串(它们表示列的主键ID)。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题