Aktualizacja :zaczynając od pandy 0.15, to_sql
obsługuje pisanie NaN
wartości (zostaną zapisane jako NULL
w bazie danych), więc opisane poniżej obejście nie powinno już być potrzebne (patrz https:// github.com/pydata/pandas/pull/8208
).
Pandy 0.15 zostaną wydane w październiku, a funkcja zostanie połączona z wersją rozwojową.
Jest to prawdopodobnie spowodowane NaN
wartości w Twojej tabeli i jest to znany mankament w chwili, gdy funkcje sql pandy nie obsługują dobrze NaNs (https://github.com/pydata/pandas/issues/2754
, https://github.com/pydata/pandas/issues/4199
)
Jako obejście w tej chwili (dla pand w wersji 0.14.1 i niższych) możesz ręcznie przekonwertować nan
wartości na Brak z:
df2 = df.astype(object).where(pd.notnull(df), None)
a następnie zapisz ramkę danych do sql. To jednak konwertuje wszystkie kolumny do dtype obiektu. Z tego powodu musisz utworzyć tabelę bazy danych na podstawie oryginalnej ramki danych. Np. jeśli pierwszy wiersz nie zawiera NaN
s:
df[:1].to_sql('table_name', con)
df2[1:].to_sql('table_name', con, if_exists='append')