Djangoのデータベース操作は、この2日間は、データベースの簡単な操作を学ぶためにここに要約することが非常に重要な要素です。
1.ORMプロフィール
リレーショナル - - マッピング簡単に言えば、ORMは、オブジェクトです。これは、データモデルとデータベースのデカップリングを可能にし、すなわち、データモデルの設計が簡単にデータベースを置き換えることができ、簡単な構成によって、特定のデータベースに依存する必要はありません。
2.準備モデルを作成します。
構成データベースの設定で
データベース= {
'デフォルト': {
'ENGINE': 'django.db.backends.mysql'
「NAME」:「myorm_test」、あなたは#を接続するデータベースの名前
'USER': 'XXX'、データベースのユーザー名#に接続します
'PASSWORD': 'XXX'、#対応するユーザ名・パスワード
「HOST」:「127.0.0.1」、マシンがあるホストへの接続#
'PORT':3306#ポート、デフォルトは3306です
}
}
パッケージpymysqlの紹介
パケットの設定で導入pymysql
プロジェクトファイルの名の下に書かれた__Init__.pyファイル:
輸入pymysql
pymysql.install_as_MySQLdb()
3.モデルを作成します。
新しいクラスmodels.py
django.db輸入モデルから
#ここにあなたのモデルを作成します。
#ブックリスト
クラスブック(models.Model):
ID = models.AutoField(PRIMARY_KEY =真)
名前= models.CharField(max_lengthを= 50)
価格= models.DecimalField(max_digits = 7、decimal_places = 2)
#1 Max_digits:桁数の合計は、(小数点と記号を除く)、decimal_places:小数点以下の桁数を
PUBLISH = models.ManyToManyField(= "公開" へ)
著者= models.ManyToManyField(= "著者" へ)
#を押してリスト
クラス公開(models.Model):
ID = models.AutoField(PRIMARY_KEY =真)
名前= models.CharField(max_lengthを= 50)
ADDR = models.CharField(MAX_LENGTH = 100)
著者の#リストhttp://www.ytsgfk120.com/の病院無錫婦人科医
クラスの著者(models.Model):
ID = models.AutoField(PRIMARY_KEY =真)
名前= models.CharField(MAX_LENGTH = 30)
国= models.CharField(max_lengthを= 20)
4.端末におけるデータ移行コマンド
python manage.pyのmakemigrations
python manage.pyの移行
問題が発生しました!!!
Pythonのmanage.py makemigrationsコマンドの実行、エラー:
ファイル "E:\ PycharmProjects \ MyORM_Test \ venv \ libに\のsite-packages \ジャンゴ\ DB \バックエンド\ mysqlの\ base.py"、行36、中
(;%データベース.__ version__ 'あなたは%sに持ってはmysqlclient 1.3.13以降が必要です')ImproperlyConfiguredを上げます
django.core.exceptions.ImproperlyConfigured:あるmysqlclient 1.3.13以降が必要です。あなたは0.9.3を持っています。
ソリューション:
では、 "E:\ PycharmProjects \ MyORM_Test \ venv \ libに\のsite-packages \ジャンゴ\ DB \バックエンド\ mysqlの\ base.py"、行36の位置は、次のコードのコメント:
#バージョン<(1、3、13)場合:
#ImproperlyConfiguredを上げる( 'はmysqlclient 1.3.13以降が必要です。あなたは%sのを持っている' %データベース.__ version__)
再びのpython manage.pyのmakemigrationsエラーの実装を継続します。
ファイル "E:\ PycharmProjects \ MyORM_Test \ venv \ libに\のsite-packages \ジャンゴ\ DB \バックエンド\ mysqlの\ operations.py"、行146、last_executed_queryで
クエリ= query.decode(エラー= '置き換えます')
AttributeError:「str」はオブジェクトが属性「デコード」を持っていません
ソリューション:
では、 "E:\ PycharmProjects \ MyORM_Test \ venv \ libに\のsite-packages \ジャンゴ\ DB \バックエンド\ mysqlの\ operations.py"、ライン146と次の位置を変更します。
クエリ= GETATTR(カーソル、 '_executed'、なし)
クエリがNoneでない場合:
#クエリ= query.decode(エラー= '置き換える')#元のコード
クエリ= query.encode(エラー= '置き換える')#と修正
リターンクエリ
問題が解決されます。