Django、データベースの使用開始

Djangoの知識、DBの使用。





Habréには、Dangoについてのさまざまなトピックがあり、さまざまな利点が説明されています。 しかし、私は道の始まりについての投稿には会いませんでした。 だから私は彼のステップで、初心者の戦闘機への短いガイドを書きたいです。

www.djbook.ru感謝しますdjangoについてのオンライン本のロシア語訳、ここから投稿を書くためのデータを得ました。



さらに本文では、djangoでデータベースを操作するために必要な一般情報を簡単に説明しようとします。



まず、使用したアプリケーションをリストします。

  1. Python 2.6
  2. ジャンゴ1.1.1
  3. postgreSQL 8.4.2
  4. python-psycopg2 2.0.8-0




ここにdjangoのインストール方法に関するリンクがあります

これは私自身の経験の説明であるため、私が行ったように、すべてを段階的に説明します。



最初のステップ。 プロジェクト作成





開始するには、新しいプロジェクトを作成する必要があります。 これを行うには、プロジェクトディレクトリの名前とその場所を決定する必要があります。 選択したディレクトリで、次のコマンドを実行します。

django-admin.py startproject hellowDjango







このアクションにより、hellowDjangoという新しいプロジェクトテンプレートが作成されます。 ここでコマンドを実行すると何が起こるかについて詳しく読むことができます 。 プロジェクトが作成されたので、次のステップに進みます。



2番目のステップ、DBセットアップ





Djangoは多くのデータベースで動作しますが、この例ではpostgresqlを使用します。



データベースが既にインストールされ、構成されていることを前提としています。 そうでない場合は、 Ubuntuでデータベースをセットアップするのに役立つリンクがあります 。 hellowDjangoプロジェクトディレクトリにある設定ファイルsettings.pyを開き、そのような行を見つけて、次のように変更します。

DATABASE_ENGINE = 'postgresql_psycopg2' #'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'.

DATABASE_NAME = myDBName # Or path to database file if using sqlite3.

DATABASE_USER = myUserDB # Not used with sqlite3.

DATABASE_PASSWORD = myUserDBPasswor # Not used with sqlite3.







念のため、説明します。





ここで、すべてが正しく構成されていることを確認する必要があります。そのためには、プロジェクトディレクトリでコマンドを実行する必要があります。



python manage.py shell







このコマンドは、プロジェクト設定でpythonインタープリターを起動します。 インタープリターで、データベースへの接続を確認します。

>>> from django.db import connection

>>> cursor = connection.cursor()









設定にエラーがある場合、必要な修正を行うのに役立つメッセージが表示されます。



3番目のステップ、アプリケーションの作成。



djangoのアプリケーションは、同じpythonパッケージに保存されているデータベースモデルとビューのコレクションです。 アプリケーションを作成するには、プロジェクトディレクトリでコマンドを実行する必要があります。



python manage.py startapp MyName







このコマンドは、hellowDjangoプロジェクトディレクトリにMyNameディレクトリを作成し、MyNameディレクトリにアプリケーションの「調達」ファイルを作成します。



4番目のステップ、モデルの説明。



djangoのDBモデル-Python言語のテーブルの説明。 アプリケーションモデルを作成するには、ファイルMyName / models.pyを編集する必要があります 。 モデルは多くのクラスを記述し、それぞれが1つのデータベーステーブルを記述し、クラスプロパティはテーブルの1列です。 クラスは、django.db.modelsパッケージに記述されているmodels.Modelから継承する必要があります。 クラスのプロパティは、django.db.modelsパッケージで説明されているタイプを持っている必要があります。 すべてのデータタイプとそれらのアプリケーションはここで説明されます



目的のために、次のデータ型を使用しました。

  1. models.DateTimeField()-日付と時刻を含むフィールド
  2. models.CharField(max_length = xx)-長さが制限されたテキストフィールド。 行の長さ= xx文字
  3. models.BooleanField()-ブール値を含むフィールド
  4. models.ForeignKey()-外部テーブルへのリンク
  5. models.PositiveIntegerField()-正の整数値
  6. models.URLField(max_length = xx)-Webページへのリンク;リンクの長さはxx文字に制限されています
  7. models.DateField()-日付を含むフィールド




データモデルを作成するときに、外部キーに問題がありました。 以下に説明する外部テーブルを参照すると、エラーが発生しました。 テーブルを並べ替えることでこの問題を解決しました。 外部キーを作成するとき、djangoは外部キーを持つフィールドの名前に接尾辞_idを追加することに注意してください。



作成されたモデルが正しいことを確認するには、次のコマンドを実行する必要があります。

python manage.py validate





モデルがテストに合格すると、djangoがテーブルを生成する方法を確認できます。 これを行うには、別のコマンドを実行します。

python manage.py sqlall MyName





データベースにモデルを作成するには、次のコマンドを実行します。

python manage.py syncdb







5番目のステップ。 インタープリターでデータベースを操作します。





以下は、データベースにデータを挿入するためのオプションです





インタープリターを実行する

python manage.py shell





>>> import MyName.models as mo #



>>> type = mo.ProductClass() #

>>> type.class_name = '' #

>>> type.save() #

>>> type

< ProductClass: ProductClass object>



#

>>> mo.Dealer(organization_name = " ").save() # Dealer

>>> mo.Dealer.objects.all() # Dealer

[< Dealer: >] # 1 1 , .



# . :

>>> mo.Product(name = '', price = 50, product_class = type).save()

Traceback (most recent call last):

...

IntegrityError: null value in column "diler_id" violates not-null constraint

>>> mo.Product(name = '', price = 50, product_class = type, diler = mo.Dealer.objects.all()[0]).save() # Product









次に、テーブルからのデータの選択について説明する必要があります。



#

>>> mo.Product.objects.all()

[< Product: >, < Product: >, < Product: >]



# name

>>> mo.Product.objects.filter(name = '')

[< Product: >]



#

>>> mo.Product.objects.filter(name__contains = '')

[< Product: >, < Product: >]









データの挿入と選択を検討しました。

レコードを更新するためのオプションを見てみましょう。



#

>>> item2 = mo.Product.objects.get(name = '')

>>> item2.name = " "

>>> item2.save()







この例は単純ですが、欠点があり、変更されたフィールドだけでなく、すべてのレコードフィールドを更新します。 この事実は、テーブル内のデータに大きな変更がある場合、ユーザーの「競争」につながる可能性があります。 このような問題を解決するには、更新方法が正しく使用されます。 このメソッドは、指定されたフィールドのみを変更します。

>>> mo.Product.objects.filter(id=3).update(name='oves')

1

>>> cole[2]

< Product: oves>









最後に説明したいのは、データベースからのレコードの削除です。



エントリを削除するには2つの方法があります。



最初にテーブルからすべてのデータを削除します

>>> cm.Dealer.objects.all()

[< Dealer: >]

>>> cm.Dealer.objects.all().delete()

>>> cm.Dealer.objects.all()

[]







選択したレコードの2番目の削除

>>> cm.ProductClass.objects.all()[0].id

1

>>> cm.ProductClass.objects.filter(id=1).delete()

>>> cm.ProductClass.objects.all()

[]







データベースを操作するためのすべてのapiコマンドの詳細については、 こちらをご覧ください



djangoでデータベースを操作する可能性について簡単に説明します。この情報が役立つことを願っています。

もう少し詳細な記事は私のブログで読むことができます




All Articles