python.django tricks - k821209/pipelines GitHub Wiki
νλ²μ λ§μ κ²μλ¬Όμ λ§λ€κΈ°
http://stackoverflow.com/questions/34425607/how-to-write-a-pandas-dataframe-to-django-model
μλ νμΈμ μΌλ§μ μ pandas dataframe μ djangoλ‘ λ°λ‘ μ€μ λ£λ κ²μ λν΄μ μ§λ¬Ένλ κ°μμ μ λλ€. μ΄μ§μλμ΄ ννΈλ₯Ό μ£Όμ μ ν΄κ²°νμ΅λλ€ κ°μ¬ν©λλ€. λ΄μ©μ μ 리ν΄μ μ¬λ¦½λλ€.
class MyModel(Model):
class Meta:
db_table = 'mytable' # This tells Django where the SQL table is
managed = False # Use this if table already exists
# and doesn't need to be managed by Django
field_1 = ...
field_2 = ...
import pandas as pd
from django.conf import settings
from sqlalchemy import create_engine
database_name = settings.DATABASES['default']['NAME']
# μ΄λΆλΆμ΄ λ¬Έμ μμ΅λλ€. (μ₯κ³ κΈ°λ³Έμ΄ splite3μΈμ§λ λͺ°λλ€μ γ
γ
) κ·Έλ¦¬κ³ λλΉνμΌ μμΉ μ λκ²½λ‘λ‘μ£Όμ€λ μ¬λ μ λ€λ² λλ¬μ£Όμ
μΌλ©λλ€.
database_url = 'sqlite:////%s'%database_name
engine = create_engine(database_url, echo=False)
# νλ€μ€ λ°μ΄ν° νλ μμ λ§λ€κ³ to_pickleλ‘ μ μ₯ν΄λμ νμΌμ λΆλ¦
λλ€.
df_django = pd.read_pickle('name.pk')
# λ°λ‘ λ£μΌλ €λκΉ λ¬΄μ¨ λ³΄μμλ¬? μ΄λ°κ² λμ 1000μ€μ© μͺΌκ°μ λ£μμ΅λλ€.
end = df_django.index[-1]
for i in tqdm( range((end/1000)+1)):
if (i+1)*1000 > end:
edf = df_django.loc[range(i*1000,end+1)]
else:
edf = df_django.loc[range(i*1000,(i+1)*1000)]
edf.to_sql('mytable', engine,if_exists='append',index=False)
30λΆμμ μ λ€ λ€μ΄κ°λ€μ. νμ¨λμμ΅λλ€. κ°μ¬ν©λλ€.