Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/302.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python正在返回一个空数据帧_Python_Sql_Pandas_Dataframe - Fatal编程技术网

python正在返回一个空数据帧

python正在返回一个空数据帧,python,sql,pandas,dataframe,Python,Sql,Pandas,Dataframe,对python和pandas来说有些陌生。我正在尝试运行一个查询(通过我公司的数据库连接)来获取信息,用store_id设置参数,然后输出到csv。我知道这个sql返回数据,但出于某种原因,它返回的是一个空数据帧 import sys import os import pandas as pd import MySQLdb import pandas.io.sql as psql from datetime import datetime from sql_connect import conn

对python和pandas来说有些陌生。我正在尝试运行一个查询(通过我公司的数据库连接)来获取信息,用store_id设置参数,然后输出到csv。我知道这个sql返回数据,但出于某种原因,它返回的是一个空数据帧

import sys
import os
import pandas as pd
import MySQLdb
import pandas.io.sql as psql
from datetime import datetime
from sql_connect import connect_to_sql, connect_to_analytics #imports credentials and connects you to DB

con = connect_to_analytics()    

print "store id"
store = raw_input() 

#pull sales metrics by rule

sql = """SELECT day_date, rule.name, analytics.a.sku, pca.att_value as 'Category', sum(analytics.a.revenue) as 'revenue', sum(analytics.a.sales) as 'quantity', MAX(analytics.a.price) as 'price', sum(analytics.a.profit) as 'profit', SUM(analytics.a.profit)/SUM(analytics.a.revenue) AS 'margin', sum(analytics.a.hits) as 'total hits', sum(pps.in_stock) as 'inventory', sum(analytics.a.sales)/(sum(pps.in_stock) + sum(analytics.a.sales)) as 'sell thru'
FROM analytics.analytics_daily_skus_data as a
JOIN wp_data_prod.products_per_store as pps on analytics.a.store_id = pps.store_id AND analytics.a.sku = pps.sku
JOIN wp_data_prod.user_rule as rule ON pps.category_id = rule.id
JOIN wp_data_prod.pps_custom_attributes as pca on pps.id = pca.pps_id
WHERE pps.store_id =%s
AND analytics.a.day_date BETWEEN '2015-07-01'AND '2015-07-30'
AND pca.att_name = "str_category"
GROUP BY analytics.a.sku, day_date
ORDER BY analytics.a.sku, day_date""" 

df = pd.read_sql(sql % store, con=con)
print df
这是输出:

In [33]: print df
Empty DataFrame
Columns: [day_date, name, sku, Category, revenue, quantity, price, profit, margin, total hits, inventory, sell thru]
Index: []
解决方案(今天就解决了):


store_id是否存储为字符串?如果尝试更简单的查询会发生什么?(例如,
SELECT*FROM myTable LIMIT 10
)@CTZhu是的,存储ID是stringtry print sql%store,并将其复制到您的sql Gui工具中,可能变量替换出了问题。。。可能它是一个varchar,需要用单引号括起来?您不需要
pps.store\u id=“%s”
?store\u id是否存储为字符串?如果您尝试一个更简单的查询,会发生什么?(例如,
SELECT*FROM myTable LIMIT 10
)@CTZhu是的,存储ID是stringtry print sql%store,并将其复制到您的sql Gui工具中,可能变量替换出了问题。。。也许它是一个varchar,需要用单引号括起来?您不需要
WHERE pps.store_id=“%s”
sql = """SELECT day_date, rule.name, analytics.a.sku, pca.att_value as 'Category', sum(analytics.a.revenue) as 'revenue', sum(analytics.a.sales) as 'quantity', MAX(analytics.a.price) as 'price', sum(analytics.a.profit) as 'profit', SUM(analytics.a.profit)/SUM(analytics.a.revenue) AS 'margin', sum(analytics.a.hits) as 'total hits', sum(pps.in_stock) as 'inventory', sum(analytics.a.sales)/(sum(pps.in_stock) + sum(analytics.a.sales)) as 'sell thru'
FROM analytics.analytics_daily_skus_data as a
JOIN wp_data_prod.products_per_store as pps on analytics.a.store_id = pps.store_id AND analytics.a.sku = pps.sku
JOIN wp_data_prod.user_rule as rule ON pps.category_id = rule.id
JOIN wp_data_prod.pps_custom_attributes as pca on pps.id = pca.pps_id
WHERE pps.store_id =('%s')
AND analytics.a.day_date BETWEEN '2015-07-01'AND '2015-07-30'
AND pca.att_name = "str_category"
GROUP BY analytics.a.sku, day_date
ORDER BY analytics.a.sku, day_date""" % (store)