実際には、多くのWebフレームワークは、接続pymysql制御データベースに使用されますが、Djangoはまた、(これも基本的にpymysql)運用方法のORMのデータベースを提供し、二つの方法がすることができますが、我々はORMについて学ぶ必要があります
- もはやそれに関係しない
mysql
、oracle
...というように。- シンプルな構成データベースを簡単にコードを変更することなく交換することができます。
ORMの操作:
HTTPリクエスト:
URL - >表示(+テンプレートデータ)
ORMの手術台:
、テーブルの作成、テーブルを変更し、ドロップテーブル
オペレーショナル・データ・ライン:
CRUD
ORMは、データベース接続などのサードパーティ製のツールを使用しpymysql
デフォルトのsqlite
デフォルト:mysqlの - >のMySQLdb(デフォルトのmysqlの接続を変更ジャンゴ
デフォルトの設定ファイルなどの設定:
DATABASES = { ' デフォルト' { ' ENGINE ':' django.db.backends.sqlite3 ' 、 ' NAME ':os.path.join(BASE_DIR、' db.sqlite3 ' ) } }
我々は、次の設定を変更する必要があります。
DATABASES = { ' デフォルト' { ' ENGINE ':' django.db.backends.mysql ' 、 ' NAME ':' DBNAME ' 、 ' USER ':' ルート' 、 ' PASSWORD ':' XXX ' 、 ' HOST ':'' 、 ' PORT ':'' 、 } }
# 如下设置放置的与project同名的配置的 __init__.py文件中
#内部モジュールのMySQLdbジャンゴのMySQLの使用が接続され、また、pymysqlの使用交換する必要がないようなのpython3モジュールである インポートpymysql )(pymysql.install_as_MySQLdbを
このバグ修正このの出現の場合- > django.core.exceptions.ImproperlyConfigured:あるmysqlclient 1.3.13以降が必要です。あなたは0.9.3を持っています
ステップは、要約を準備することです:
- データベースを作成します。
- 設定ファイルを変更します。
- ファイル__init__.py導入pymysqlを変更
そして、あなたは作成私たちがテーブルを生成したいので、クラスを:
models.pyレビューのapp01フォルダで:
django.db インポートモデル #は、テーブルを作成し、列(ID \ NID ... クラスのUserInfo(models.Model): NID = models.BigAutoField(PRIMARY_KEY = TRUE) #この行はDjangoが自動的にデフォルトのidを作成する書き込み、自己ではありません主キーによって、将来的にはこの行を書き込むことはできませんので! 名 = models.CharField(max_lengthを= 32 ) パスワード = models.CharField(64 MAX_LENGTH =)
私たちは、テーブルを作成するために、そのクラスを作成するには?..再びapp01に登録されている設定:
#アプリケーション定義 INSTALLED_APPS = [ ' django.contrib.admin ' 、 ' django.contrib.auth ' 、 ' django.contrib.contenttypes ' 、 ' django.contrib.sessions ' 、 ' django.contrib.messages ' 、 ' django.contrib .staticfiles ' ' app01 " ]
最後に、我々は、トリックをズームする必要があります。テーブル作成!これらの2つのコマンドは、骨髄に記録します!!!
#何の移行が存在しない場合は、最初に次のファイルを生成する必要がありアプリ! #Pythonのmanage.py makemigrations --empty app01 Pythonのmanage.py makemigrations Pythonのmanage.py移行
それを見、すべて私たち自身のテーブルへの突然のほかのテーブルの多くはに関連したDjangoの背景が付属している、実際には、があります。
後でクラスのテーブル名を変更したい場合は、変更し、行の「骨髄コマンド」を実行してください!データは重要ではありません!
あなたが遅い年齢= models.IntegeField()を追加したい場合は、直接の行を追加しますが、....
年齢= models.IntegeField(ヌル= true)か、年齢= models.IntegeField(デフォルト= XXX)を指定することによって、元のデータテーブルの場合
多くの関係を作成し、その上には、例えば、UG = models.ForeignKey(「のUserGroup」、ヌル= TRUE)#は、外部キーug_idを生成します
データベース関連のアクション:CRUD
#テストを削除することができる DEF テスト(requst): から app01 インポートモデル #新しい models.UserInfo.objects.create(ユーザ名= ' シャノン'、パスワード= ' 111111 ' ) #を見つける #タイプ(リスト)というのUserInfoクエリセットを[OBJ、OBJ 、OBJ] のUserInfo = models.UserInfo.objects.all() のための行でのUserInfo: プリント(row.nid、row.username) #プラス馴化ルックアップフィルタ() # 、であり; id__gt = 1つのidが1よりも大きいです。 id__lt = 1は1つの未満のIDであります = models.UserInfo.objects.filterのUserInfo(NID = 2、ユーザ名= ' シャノン' ) #を削除、最初〜切り捨て見つけなければならない models.UserInfo.objects.filter(= NID。1 ).Delete() #アップデート models.UserInfoを.objects.filter(= NID。4).Update(パスワード= ' 123 ' ) を返すのHttpResponse(' 成功')
インプリメント