Django DB ์ค๋น
- 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',
]
...
- ๋ฃ๊ณ ์ถ์ 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
- 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