python 数据结构转换_关于python:如何将SQL查询结果转换为PANDAS数据结构?

任何有关此问题的帮助将不胜感激。

所以基本上我想对我的SQL数据库运行查询并将返回的数据存储为Pandas数据结构。

我附加了查询代码。

我正在阅读关于Pandas的文档,但是我有问题确定我的查询的返回类型。

我试图打印查询结果,但它没有提供任何有用的信息。

谢谢!!!!

from sqlalchemy import create_engine

engine2 = create_engine('mysql://THE DATABASE I AM ACCESSING')

connection2 = engine2.connect()

dataid = 1022

resoverall = connection2.execute("

SELECT

sum(BLABLA) AS BLA,

sum(BLABLABLA2) AS BLABLABLA2,

sum(SOME_INT) AS SOME_INT,

sum(SOME_INT2) AS SOME_INT2,

100*sum(SOME_INT2)/sum(SOME_INT) AS ctr,

sum(SOME_INT2)/sum(SOME_INT) AS cpc

FROM daily_report_cooked

WHERE campaign_id = '%s'", %dataid)

所以我想知道我的变量"resoverall"的格式/数据类型是什么,以及如何使用PANDAS数据结构。

基本上,"resoverall"变量的结构/类型是什么以及如何将其转换为Pandas数据结构。

熊猫听起来很有意思,我之前没有听说过,但这个问题几乎没有任何意义。 您能否尝试通过"不提供任何有用信息"澄清您的意思?

因为我执行的查询给出了一个返回,只是想知道我应该如何操作这个返回并使其成为一个pandas数据结构。 我是python的新手,因此没有太多的知识,就像我们在PHP中做的只是做一个sql_fetch_array而且我们有"可用"的数据。=)

编辑:2015年3月

如下所述,pandas现在使用SQLAlchemy来读取(read_sql)和插入(to_sql)数据库。以下应该有效

import pandas as pd

df = pd.read_sql(sql, cnxn)

上一个答案:

通过mikebmassey来自类似的问题

import pyodbc

import pandas.io.sql as psql

cnxn = pyodbc.connect(connection_info)

cursor = cnxn.cursor()

sql ="SELECT * FROM TABLE"

df = psql.frame_query(sql, cnxn)

cnxn.close()

这似乎是最好的方法,因为您不需要手动使用.keys()来获取列索引。可能丹尼尔的答案是在这种方法存在之前写的。你也可以使用pandas.io.sql.read_frame()

效果很好!一定要使用pd.read_sql()

@openwonk将在上面的代码片段中实现pd.read_sql()?

实际上,自从我上次回复以来,我一直使用pyodbc和pandas。用例子,FYI添加新答案。

这是完成这项工作的最短代码:

from pandas import DataFrame

df = DataFrame(resoverall.fetchall())

df.columns = resoverall.keys()

你可以像保罗的回答一样更好地解析这些类型。

它是否适用于500000条记录?

这对我来说是一个从Oracle数据库中记录的1.000.000记录。

df = DataFrame(cursor.fetchall())返回ValueError: DataFrame constructor not properly called!,似乎元组的元组对于DataFrame构造函数是不可接受的。在字典或元组模式下,游标上也没有.keys()。

如果您使用的是SQLAlchemy的ORM而不是表达式语言,您可能会发现自己想要将sqlalchemy.orm.query.Query类型的对象转换为Pandas数据框。

最干净的方法是从查询的语句属性中获取生成的SQL&#x

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值