如何在python中执行mysql查询并将输出作为数据框[重复]

Posted

技术标签:

【中文标题】如何在python中执行mysql查询并将输出作为数据框[重复]【英文标题】:How to execute mysql query and get the output as data frame in python [duplicate] 【发布时间】:2022-01-16 23:58:59 【问题描述】:

我必须使用 sql 查询从远程服务器中提取数据并将其显示为数据库。所以我为此使用了以下代码。

db_connection = sql.connect(host='10.10.10.10', database='cd', user='root', password='',charset='utf8')
cursor = db_connection.cursor()
raw_data_query =  "select date(originating_date_time),count(*) as Calls,sum(if(call_duration>0,1,0)) as Duration,sum(CEILING(call_duration/100))/60 from calldetailrecs where term_trunk_group in (986,985,984,983) group by date(originating_date_time)"
cursor.execute(raw_data_query)
cursor.fetchall()

我需要得到如下输出,

| date(originating_date_time) | calls  | sum(if(call_duration>0,1,0)) | sum(CEILING(call_duration/100))/60 |
+-----------------------------+--------+------------------------------+------------------------------------+

| 2021-12-12                  | 538507 |                       115322 |                        403437.7833 |
| 2021-12-13                  | 442065 |                       103372 |                        323565.3333 |
+-----------------------------+--------+------------------------------+------------------------------------+
4 rows in set (25.75 sec)

但是当我使用上面的代码时,我只能得到以下输出。

[(datetime.date(2021, 12, 12),
  538507,
  Decimal('115322'),
  Decimal('403437.7833')),
 (datetime.date(2021, 12, 13),
  442065,
  Decimal('103372'),
  Decimal('323565.3333'))]

有人可以解释我应该如何获得上述表格吗?

【问题讨论】:

我更喜欢 pandas read_sql 方法。它更简单、代码更少、速度更快、更安全,而且您不必记住打开和关闭连接:pandas.pydata.org/docs/reference/api/pandas.read_sql.html 【参考方案1】:

如果你想要一个 pandas 数据框,你可以使用 pandas read_sql:

db_connection = sql.connect(host='10.10.10.10', database='cd', user='root', password='',charset='utf8')
raw_data_query = "select date(originating_date_time),count(*) as Calls,sum(if(call_duration>0,1,0)) as Duration,sum(CEILING(call_duration/100))/60 from calldetailrecs where term_trunk_group in (986,985,984,983) group by date(originating_date_time)"
df = pd.read_sql(raw_data_query, db_connection)

这很简单,快速,您不必记住之后关闭连接。

【讨论】:

以上是关于如何在python中执行mysql查询并将输出作为数据框[重复]的主要内容,如果未能解决你的问题,请参考以下文章

入门:如何从Linux命令行直接执行MySQL/MariaDB查询

在 Perl 中将 MySQL 结果作为哈希表返回

Laravel中的MySQL子查询,如何加入查询并将第二个查询的结果作为新列添加到第一个查询?

如何在 mysql 服务器中执行动态 Sql 字符串作为查询?

如何从 python 调用 nikto 并将输出作为字符串返回

如何在执行php脚本后将mysql查询结果返回到html页面?