2016-03-07 48 views
3

我通過pandas的read_sql和外部應用程序(DbVisualizer)運行完全相同的查詢。pandas read_sql不讀取所有行

DBVisualizer中返回206行,而大熊貓返回178

我曾嘗試通過基於在How to create a large pandas dataframe from an sql query without running out of memory?提供的信息卡盤讀取來自熊貓的數據,並沒有做出改變。

這可能是什麼原因以及如何補救?

查詢:

select * 
from rainy_days 
where year=’2010’ and day=‘weekend’ 

的包含列:日期,年份,星期,在這一天,溫度,geo_location(每個位置行),測風量的雨,雨水量的前一天,等等。

確切的Python代碼(減去連接方式)是:

import pandas 
from sqlalchemy import create_engine 

engine = create_engine(
    'postgresql://user:[email protected]/weatherhist?port=5439', 
) 

query = """ 
     select * 
     from rainy_days 
     where year=’2010’ and day=‘weekend’ 
     """ 
df = pandas.read_sql(query, con=engine) 
+0

你正在使用奇怪的引號('year ='2010''),我不知道這是否是一個原因,但你可以用普通的單引號替換它們嗎? (''') – joris

+0

有沒有解決這個問題的方法?我遇到了同樣的問題。 – medev21

回答

0

什麼工作對我來說:

  1. 下降指數
  2. 出口整個事情到CSV:
  3. 刪除所有行:

    DELETE FROM表

  4. 導入CSV早在

  5. 重建指數

I th墨它會去更快,如果我用了熊貓:

df = read_csv(..) 
df.to_sql(..) 

我想這應該很容易工作到X毫米排表,但對於真正的大表可能是放緩。

+0

在SQL中使用奇怪的引號來區分字段名和保留字,例如, SELECT \'right \'FROM ... – kztd