上一篇博客我们讲了在mysql中如何实现这个功能,但是因为使用了SET @row_number = 0;
SET @current_spider = ''; 会导致在python中不一样。所以记录一下这个问题的查询方式。
在python中是使用 pymysql来连接mysql数据库。在 pymysql 中,您可以在执行查询之前使用 cursor.execute() 方法来设置变量,然后再执行主要的查询。
以下是一个如何在 pymysql 中设置变量并执行查询的示例:
- import pymysql
-
- # 连接到数据库
- connection = pymysql.connect(host='your_host', user='your_user', password='your_password', db='your_db')
- try:
- with connection.cursor() as cursor:
- # 设置变量
- cursor.execute("SET @row_number = 0;")
- cursor.execute("SET @current_spider = '';")
-
- # 执行查询
- cursor.execute("""
- SELECT
- id,
- title,
- `time`,
- spider_name
- FROM (
- SELECT
- id,
- title,
- `time`,
- spider_name,
- @row_number := IF(@current_spider = spider_name, @row_number + 1, 1) AS row_num,
- @current_spider := spider_name
- FROM
- policy
- WHERE
- spider_name IN ('aaa', 'bbb')
- ORDER BY
- spider_name,
- `time` DESC
- ) AS sorted_data
- WHERE
- row_num <= 10;
- """)
-
- # 获取结果
- result = cursor.fetchall()
- for row in result:
- print(row)
-
- finally:
- connection.close()