DjangoからOracle DB 11gへつないでみる
べつにgentooじゃなくても繋げます、ただgentooでやりたかっただけです
DBコネクタcx_Oracleをいれる
mysql-pythonてきなDBコネクタcx_Oracleを入れておく、ebuild作っておきましたのどうぞ
ugui7 ~ # layman -a karky7 ugui7 ~ # emerge -pv dev-python/cx_oracle lculating dependencies... done! [ebuild N f ] dev-db/oracle-instantclient-basic-11.2.0.4::gentoo ABI_X86="32 (64) (-x32)" 0 KiB [ebuild N ~] dev-python/cx_oracle-5.3::karky7 USE="doc {-test}" PYTHON_TARGETS="python2_7 python3_4" 0 KiB ugui7 ~ # emerge -pv dev-python/cx_oracle
最近の私のlaymanリポジトリは腐りつつあるのでご注意ください。ウケル
Djangoをセットアップ
Djangoは入れてあるものとします
settings.pyを書き換え
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.oracle', 'NAME': 'orcl', # SIDに指定するやつ 'USER': 'ALCHU', 'PASSWORD': 'IICHIKO20', 'HOST': '192.168.253.13', 'PORT': '1521' }, }
modelを作成
model.py
from __future__ import unicode_literals from django.db import models class Blogpost(models.Model): id = models.BigIntegerField(primary_key=True) title = models.TextField() authorid = models.ForeignKey('Person', db_column='authorId') # Field name made lowercase. class Meta: db_table = 'BlogPost' class Person(models.Model): id = models.BigIntegerField(primary_key=True) name = models.TextField() age = models.BigIntegerField(blank=True, null=True) regdate = models.DateTimeField(blank=True, null=True) class Meta: db_table = 'Person'
DBマイグレーションする
modelからテーブルを作成する
~/Code/django_skel $ ./manage.py makemigrations ~/Code/django_skel $ ./manage.py migrate Operations to perform: Synchronize unmigrated apps: staticfiles, messages Apply all migrations: admin, contenttypes, auth, app1, sessions Synchronizing apps without migrations: Creating tables... Running deferred SQL... Installing custom SQL... Running migrations: Rendering model states... DONE Applying contenttypes.0001_initial... OK Applying auth.0001_initial... OK Applying admin.0001_initial... OK Applying app1.0001_initial... OK Applying contenttypes.0002_remove_content_type_name... OK Applying auth.0002_alter_permission_name_max_length... OK Applying auth.0003_alter_user_email_max_length... OK Applying auth.0004_alter_user_username_opts... OK Applying auth.0005_alter_user_last_login_null... OK Applying auth.0006_require_contenttypes_0002... OK Applying sessions.0001_initial... OKこのあとPersonテーブルに適当にデータを突っ込む
開発サーバーで動かしてみる
~/Code/django_skel $ ./manage.py runserver
cx_Oracle入れるのに、oracle提供のバイナリが必要なのがちょっと面倒だけどとりあえずdjangoもOracle Databaseでもいけることが分かった今日この頃です。
0 件のコメント:
コメントを投稿