python.django.from.data - k821209/pipelines GitHub Wiki

Django DB ์ค€๋น„

  1. Django ์‹œ์ž‘
# django ์ดˆ๊ธฐํ™”
$ django-admin startproject mysite .
$ python manage.py startapp dbname
$ cd mysite
$ vi settings.py
# mysite/settings.py
...
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'dbname',
]
...
  1. ๋„ฃ๊ณ  ์‹ถ์€ Table์— ๋”ฐ๋ผ model์ œ์ž‘
$ cd ..
$ cd dbname
$ vi models.py
# ./dbname/models.py
from django.db import models

class GO(models.Model):
   class Meta:
      db_table = 'go' # sql์— ๋„ฃ์„๋•Œ ์ง€์ •ํ•ด์ค„ table์ด๋ฆ„ 
   GO     = models.CharField(max_length=20) # ๋„ฃ๊ณ ์žํ•˜๋Š” ํ…Œ์ด๋ธ”์˜ column names 
   Pvalue = models.CharField(max_length=20)
   Odds   = models.CharField(max_length=20)
   name   = models.CharField(max_length=200)
   defin  = models.TextField()
$ vi admin.py
# ./dbname/admin.py
from django.contrib import admin
from .models import GO

admin.site.register(GO)
$ cd ..
$ python3 manage.py makemigrations dbname
$ python3 manage.py migrate
$ python3 manage.py runserver 0.0.0.0:8888
  1. table loading
# new way 
import sqlite3
import pandas as pd

v1 = pd.read_csv('PosInFo_v1.csv')
v2 = pd.read_csv('PosInFo_v2.csv')

con = sqlite3.connect('../db.sqlite3')
cur = con.cursor()

cur.executemany("INSERT INTO v1 (Pos_v4, Pos_v1, Pos_v1_Info) VALUES (?,?,?)",v1.values) # INTO ๋‹ค์Œ์˜ v1์€ model์—์„œ ์ง€์ •ํ•ด์ค€ class Meta: dbtable = 'v1' 
cur.executemany("INSERT INTO v2 (Pos_v4, Pos_v2, Pos_v2_Info) VALUES (?,?,?)",v2.values)

con.commit()
con.close()
# manage.py ๊ฐ€ ์žˆ๋Š” directory
$ vi db_create.py
# ./db_create.py
# pandas 0.22.0 only. 
import pandas as pd
from django.conf import settings
from sqlalchemy import create_engine
import os
os.environ['DJANGO_SETTINGS_MODULE'] = 'mysite.settings'

database_name = settings.DATABASES['default']['NAME'] # ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค ์ด๋ฆ„์€ setting๋ฅผ ์ฐธ๊ณ ํ•ด์„œ ๋„ฃ์Œ. ๋ณ„๋„์˜ sqlํŒŒ์ผ์„ ๋งŒ๋“ค๋•Œ ๊ผญ ์ฒดํฌ
database_url = 'sqlite:////%s'%database_name
engine = create_engine(database_url, echo=False)
df_django = pd.read_csv('GO_list.txt',sep='\t') # ๋„ฃ๊ณ ์žํ•˜๋Š” ํ…Œ์ด๋ธ”. excelํ˜•์‹๋„ ์ข‹๋‹ค. ํ…Œ์ด๋ธ”์˜ column ์ด๋ฆ„์ด model์—์„œ ์ง€์ •ํ•œ๊ฒƒ๊ณผ ์ผ์น˜ ํ•ด์•ผํ•œ๋‹ค. 
df_django.to_sql('go', engine,if_exists='append',index=False) # 'go' ๋ผ๋Š” ์ด๋ฆ„์€ modelํŒŒ์ผ์„ ๋งŒ๋“ค๋•Œ ์ง€์ •ํ–ˆ์Œ. 

Django view, HTML ์ œ์ž‘

$ vi urls.py
from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('dbname/',include('dbname.urls')) # dbname app์˜ urls.py๋ฅผ ์ฐธ๊ณ ํ•˜๋ผ๋Š” ๋œป์ด ๋œ๋‹ค. 
]
$ cd ..
$ cd dbname
$ vi