任何有关此问题的帮助将不胜感激。
所以基本上我想对我的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