import pymysql
# 数据库配置信息
config = {
'host': 'localhost', # MySQL服务器地址
'port': 3306, # MySQL服务器端口号
'user': 'your_username', # 数据库用户名
'password': 'your_password', # 数据库密码
'database': 'your_database', # 数据库名
'charset': 'utf8mb4', # 编码
}
# 定义一个函数来连接数据库并执行查询
def query_database(config, sql):
"""
连接到MySQL数据库并执行查询。
:param config: 数据库配置字典
:param sql: 要执行的SQL查询语句
:return: 查询结果列表
"""
connection = pymysql.connect(**config)
try:
with connection.cursor() as cursor:
cursor.execute(sql)
return cursor.fetchall()
finally:
connection.close()
# 定义一个函数来循环查询并打印结果
def loop_query_print_results(config, sql, batch_size=100):
"""
循环查询数据库并分批次打印结果。
:param config: 数据库配置字典
:param sql: 要执行的SQL查询语句
:param batch_size: 每批次查询的记录数
"""
offset = 0
while True:
# 分页查询,获取当前批次的记录
batch_sql = f"{sql} LIMIT {batch_size} OFFSET {offset}"
batch_results = query_database(config, batch_sql)
# 如果当前批次没有结果,则查询结束
if not batch_results:
break
# 打印当前批次的记录
for row in batch_results:
print(row)
# 更新偏移量,继续查询下一批次
offset += batch_size
# 主程序
if __name__ == "__main__":
# 替换以下占位符为实际的数据库配置
your_username = 'your_username'
your_password = 'your_password'
your_database = 'your_database'
your_table_name = 'your_table_name'
# SQL查询语句
query = f"SELECT * FROM {your_table_name}"
# 调用函数执行循环查询
loop_query_print_results({
'host': 'localhost',
'user': your_username,
'password': your_password,
'database': your_database,
'charset': 'utf8mb4',
}, query)
在上述脚本中,我们定义了两个函数:
query_database(config, sql): 这个函数接受数据库配置和SQL查询语句,连接数据库并执行查询,然后返回查询结果。loop_query_print_results(config, sql, batch_size=100): 这个函数用于循环执行查询,每次查询batch_size条记录,并分批次打印结果。它使用LIMIT和OFFSET子句来分页查询,从而避免一次性加载过多数据。
请确保在运行脚本之前,将your_username、your_password、your_database和your_table_name替换为实际的数据库配置。此外,根据你的数据库大小和性能,可以调整batch_size参数以优化查询性能。
