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λΆ„μ•ˆμ— 쏙 λ‹€ λ“€μ–΄κ°”λ„€μš”. ν•œμˆ¨λœμ—ˆμŠ΅λ‹ˆλ‹€. κ°μ‚¬ν•©λ‹ˆλ‹€.