如何将mySQL数据库中的结果保存到python中的文件或变量中?

2024-07-01 08:28:16 发布

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

我有一个小应用程序,它从客户端获取用户坐标,并在我的mySQL数据库中搜索最近的位置。我需要从数据库中获取结果并将其保存到文件中,或者将这些结果分配给变量。 我需要在下面的代码中添加什么才能实现它

import mysql.connector


mycursor = mydb.cursor()

mycursor.execute("SELECT dbx, dby, SQRT(
    POW(69.1 * (dbx - userx), 2) +
    POW(69.1 * (usery - dby) * COS(latitude / 57.3), 2)) AS distance
FROM TableName HAVING distance < 125 ORDER BY distance;")

mydb.commit()

dbxdby是存储在数据库中的点的经度和纬度参数 userxusery是从客户端获取的经度和纬度参数


Tags: 用户数据库应用程序客户端参数distancemydb纬度
2条回答

您可以获取查询结果并将其保存到变量中,方法如下:

res=mycursor.execute("SELECT dbx, dby, SQRT(
    POW(69.1 * (dbx - userx), 2) +
    POW(69.1 * (usery - dby) * COS(latitude / 57.3), 2)) AS distance
FROM TableName HAVING distance < 125 ORDER BY distance;").fetcall()

res将是元组列表,例如[(0.53, 75.32, 2000), (0.55, 62.75, 3000)]

您现在可以使用以下命令将其保存到txt文件:

with open('res.txt', 'w') as f:
    f.writelines([(str(i)+'\n') for i in res])

您还可以将其保存为csv、json或任何其他您想要的格式,但在您的情况下可以使用txt

可以使用以下查询将查询结果放入文件/tmp/some_filename.txt

SELECT dbx, dby, SQRT(
    POW(69.1 * (dbx - userx), 2) +
    POW(69.1 * (usery - dby) * COS(latitude / 57.3), 2)) AS distance
FROM TableName HAVING distance < 125 ORDER BY distance
INTO OUTFILE '/tmp/some_filename.txt'

如果要使用分隔符和引号字符,请添加以下内容:

FIELDS TERMINATED BY ','
ENCLOSED BY '"'

如果要为输出文件添加行终止符:

LINES TERMINATED BY '\n'

相关问题 更多 >

    热门问题