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

Posted

技术标签:

【中文标题】如何将 mySQL 数据库中的结果保存到 python 中的文件或变量中?【英文标题】:How to save results from mySQL database into a file or variable in python? 【发布时间】:2021-02-10 13:21:32 【问题描述】:

我有一个小应用程序,它从客户端获取用户坐标并在 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 是从客户端获取的经度和纬度参数。

【问题讨论】:

如何将结果从 mySQL 数据库保存到文件中 执行SELECT .. INTO OUTFILE. 【参考方案1】:

可以使用查询将查询结果放入文件/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'

【讨论】:

【参考方案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 格式

【讨论】:

以上是关于如何将 mySQL 数据库中的结果保存到 python 中的文件或变量中?的主要内容,如果未能解决你的问题,请参考以下文章

MYSQL 如何把查询到的结果插入到另一个表中?

如何将 MySql 查询的结果保存到 VB 变量中? [复制]

如何将MySQL的结果保存到外部文件中

如何将 JTextField 中的数据保存到 mysql 数据库中?

将 MySQL 查询结果保存到 CSV 文件

如何将排序结果保存到模型