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