データベース設定
前のセクションでURL DjangoのメインURLのWebアプリケーションを参照する方法としてだけでなく、Djangoプロジェクトを作成DjangoプロジェクトでWebアプリケーションを作成する方法を学びます。のは、Djangoのデータベースを使用する方法を学びましょう。Djangoはデータベースを使用するには、まず理解しなければならない個人用サイト/個人用サイト/ settings.pyデータベース接続情報のオプションに設定します。
データの移行は非常に便利ですので、Djangoはデフォルトsqlite3のデータベースが使用され、SQLiteは、軽量なファイルベースのデータベースです。スタンドアロン、組み込み、開発、デモなどでテストするために使用します。しかし、sqliteのは、私たちが望むものではない一方で、それは、同時にデータベースを設定するための許可のためのデータユーザの要件のいくつかのようにのみ書き込み動作が可能、データベースの同時実行をデータベースユーザーの管理をサポートしていませんし、我々は、MySQLを使用することができますpostgresqlm、Oracleや他の大規模なデータベース。私たちは投票システムで、理論的には、多くのユーザーが存在します書き込み(笑)投票することができますので、ので、ここで我々はmariadbデータベースを使用し、それは、MySQLとの完全な互換性、オープンソースデータベースMySQLの基礎です。あなた自身の百度をmariadb。
1.設定mariadbデータベース
私は、yumのインストール方法ですが、便利な、Djangoはので、ここでmariadb10.2.31を使用し、より多くのMySQL5.6のバージョンよりを必要とし、ここで使用しています。このバージョンでは、MySQL5.6、MySQL5.7と同様に、独自の新機能の一部が含まれています。
公式のyumソースmariadbの設定1.1
[ルート@ localhostの個人用サイト] #公式mariadb10.2.31のVI /etc/yum.repos.d/MariaDB.repo#追加ソース [mariadb] 名前 = MariaDB BASEURL = http://yum.mariadb.org/10.2.31/centos7-amd64/ gpgkey = HTTPS://yum.mariadb.org/RPM-GPG-KEY- MariaDB gpgcheck = 1
あなたが他のバージョンを使用したい場合は、公式サイトをご覧くださいhttps://downloads.mariadb.org/対応するバージョンをダウンロードします。
1.2インストールmariadb10.2.31
[ルート@ localhostの個人用サイト]#yumをMariaDB-サーバーMariaDB・クライアントをインストール-y
インストールが完了したら、次のインターフェイスが表示されます。
1.3 mariadbサービス管理
CentOSの7 systemctlツールでは、我々は彼らのサービスを管理するためにyumを通じてインストールするために使用することができます
[ルート@ localhostの〜] #のsystemctlスタートMariaDB // MySQLサービスを開き、 [ルート@ localhostの〜] #のsystemctl STOP MariaDB //停止MySQLサービス [ルート@ localhostの〜] #systemctl再起動MariaDB // MySQLサービスを再起動し ます。[root @ localhostの〜 ] #は//ブートを設定MariaDBを有効systemctl [ルート@ localhostの〜] #systemctl //無効MariaDB起動を禁止します
1.4データベースの初期化mariadb
MariaDBはインストールされ、データベースの安全と正常な動作を確保するために打ち上げ成功後、あなたは、データベースプログラムの動作を初期化する必要があります。
1 [ルート@ localhostの〜] #が開始systemctl mariadb //启动mysqlの服务 2 [ルート@ localhostの〜] #mysql_secure_installation //初始化mysqlの数据库 3 4 // 进入mariadb的初始化配置模式 5 注:このスクリプトISのすべての部分を実行していますALL MariaDBのための推奨 6台の 生産使用のサーバー!各ステップを注意してお読みください! 7 8それを確保するためにMariaDBにログインするために、我々は「現在必要でしょ 9パスワードをするために rootユーザー。あなたは場合は「ちょうどMariaDBをインストールしまして、 10あなたは避難所」tは、パスワードは、空白になり、まだrootのパスワードを設定する 11 あなただけのプレスここで入力する必要がありますので。 12 13 ERROR 1045(28000):アクセスが拒否されたため、ユーザー' ルート' @ ' localhostの' (パスワードを使用して:YES)、 14は現在のパスワードを入力用(入力したルートを用なし):// 这里输入mysqlの数据库ルート密码、默认没有密码 15 上...移動OK、成功裏に使用されたパスワード、 16 17 誰もMariaDBにログインすることはできませんrootパスワードの設定性を保証 18 適切な承認なしにrootユーザーを。 19 20?設定rootパスワード[Y / N ] //をy のMySQLデータベースrootユーザのパスワードに設定されているが、ここでは、パスワード設定 21新しいパスワードを:// パスワードを設定する 22 //:新しい再新しいパスワードを入力し確認パスワードが入力された 23 正常に更新パスワード! 24の リロード権限テーブル... 25の ...成功は! 26が 27 28 デフォルトでは、A MariaDBのインストールユーザーはAN匿名、許可だれでも持っている 29を MariaDB INTO Aのユーザーアカウントを作成して持ってなくても、ログに記録するために 30それらは。これをISのみ対象のためのテスト、およびインストール時に作成するには 31 A「はスムーズな移動をビット。それらをあなたによってINTO Aに移動する前に削除する必要があります 32 生産環境を。 33は 34である //削除匿名ユーザー?[Y / N-] Y 匿名ユーザーを削除するかどうかを、ここで削除。または他のデータベースのユーザー名とパスワードを入力せずにログインすることができる 35 ...成功!は 36 37通常、根がすべきのみ接続を許可さから 「ローカルホスト」。この 38保証しますが、誰かがrootのパスワードでATを推測できるないことから、ネットワークで。 39 40リモート許可しないルートログイン[Y / N-] N - ?// ルート・ユーザのリモートログインを可能にするデータベース、リモートデータベースからrootユーザーログイン拒否するかどうか 41である 。...スキップし 42である 43のISデフォルトでは、MariaDBは、名前のデータベースが付属しています「テスト」誰もができることを 44であるアクセス。これはISのみまた意図のためのテスト、および削除すべき 45の INTO Aプロダクション環境を移動する前に。 46で 47の削除テストデータベースと?ITへのアクセス[Y / N] yの// 何の使用は、それを削除しないためにビルトインテストテスト・データベースのMySQL、削除 48 - 落下テストデータベース... 49 !...成功 50 - テストデータベース...上の権限を削除する 51 .. 。成功! 52 53 ウィルによっての特権のテーブルはすべての変更内容SO FARことをリロード確認 54 ウィルによってテイク効果がすぐにある。 55 56リロード表特権になりました[Y- / N-] Y - ?// ここに即効性と、すぐに有効にするかどうかを 57 ...成功! 58 59は、 クリーンアップ... 60 61れる!あなたがいる場合すべてのDONE " 完了上記の手順をすべてVE、あなたのMariaDB 62は、 今や安全でインストールする必要があります。 63で 64人の感謝のために使用してMariaDB! 65の 66の初期化データベースmariadb
mariadbコーディング1.5構成データベース
あなたは私たちは、データベースの外観を上陸させたとは考えていない場合はmariadbデフォルトのデータベースのエンコーディングは、ラテン語です:
[localhostの個人用サイト@ルート] #-urootをログに記録するMySQLデータベース- P#
MariaDB [(なし)]> \ sの#データベースログインを入力します\ sのビューmariadbサービスのステータス情報
私たちは、下のコンフィギュレーション・ファイルのmy.cnfを調整する必要があります
[ルート@ localhostのビン] #のvimな/etc/my.cnf
[mysqldを】 文字 -set-サーバー= UTF8 // 設定されたサーバーの文字セット 照合 -server = utf8_general_ci // 設定サーバー側の文字セット DATA =の/ var / libに/ mysqlの socket=/var/lib/mysql/mysql.sock # Disabling symbolic-links is recommended to prevent assorted security risks symbolic-links=0 # Settings user and group are ignored when systemd is used. # If you need to run mysqld under a different user or group, # customize your systemd unit file for mariadb according to the # instructions in http://fedoraproject.org/wiki/Systemd [mysqld_safe] log-error=/var/log/mariadb/mariadb.log pid-file=/var/run/mariadb/mariadb.pid [client] // 设置客户端的字符集 default-character-set=utf8 [mysql] // 设置客户端的字符集 default-character-set=utf8 # # include all files from the config directory # !includedir /etc/my.cnf.d
设置好字符集后,重启mariadb,登录数据库验证字符集
[root@localhost mysite]# systemctl restart mariadb
[root@localhost mysite]# mysql -uroot -p # 登录数据库
MariaDB [(none)]> \s # 登录数据库后输入\s查看mariadb服务的状态信息
数据库设置到这里算是告一段落,但事情并没有结束,我们还需要为我们的Django程序创建一个 数据库,以及操作这个数据库的用户。
1.6 创建数据库mysqite,并未数据库分配用户。
MariaDB [(none)]> create database mysite; # 为我们的Django程序创建mysite数据库
# 为mysite数据库创建一个mysite_user用户,该用户对数据库拥有所有权限,并且可以在任意主机访问该数据库 # 虽然这么做是不安全的,但现在是初学暂且就这么设置吧 MariaDB [(none)]> grant all on mysite.* to mysite_user@'%' identified by '用户密码'; # 为数据库分配用户 MariaDB [(none)]> flush privileges; # 更新权限,使设置生效
好了我们已经创建好了数据库:mysite,数据库用户:mysite_user 并且允许该用户在任意主机访问该数据库。
1.7 验证是否可以远程连接数据库mysite
在运行一台主机尝试远程登录数据库查看,是否可以登录,为确保可以登录建议关闭防火墙,如果一切顺利你会看到:
到目前为止,数据库操作就到这里。下面到settings.py中进行设置
2、设置mysite/mysite/settings.py
[root@localhost mysite]# vim mysite/settings.py
如果我们使用的是sqlite3数据库,那么就不需要像上面那样设置数据库及修改settings.py就可以直接使用数据库了,但我们要使用的是mariadb,所以我们还需要修改这段配置。
1 [root@localhost mysite]# vim mysite/settings.py 2 DATABASES = { 3 'default': { 4 'ENGINE': 'django.db.backends.mysql', 5 'HOST': '192.168.10.100', 6 'PORT': 3306, 7 'NAME': 'mysite', 8 'USER': 'mysite_user', 9 'PASSWORD': '123.abc', 10 } 11 }
修改后的settings.py看起来像下面这样:
[root@localhost mysite]# vim mysite/settings.py # 设置数据库连接选项
数据库连接设置好后,你还需要做一件事,那就是设置Django的时区,Django默认的时区是UTC,我们需要将时区改成中国的,所以你需要在settings.py中找到TIME_ZONE选项并改正。修改后的样子如下:
到此settings.py配置就告一段落。我们通过Django以ORM的方式在数据库中创建表。
3、创建models(在数据库中建表)
我们在来看一下mysite项目的结构:
再来看一下web应用polls的结构:
上一章节我们只是简单的创建了应用polls,并对其进行访问,如果我们想要polls能够在数据库中创建表,还需要在主程序的settings.py中将我们的polls注册进去才可以。
因为Django是通过 python manage.py migrate来创建表的,该命令会将settings.py中的INSTALLED_APPS中注册的应用结合DATABASES中的数据库连接信息,并根据INSTALLED_APPS中注册应用的models.py进行数据的迁移(也就是创建表)。所以我们需要将polls应用注册到settings.py的INSTALLED_APPS选项中。
[root@localhost mysite]# vim mysite/settings.py # 像配置文件中注册polls应用
注册后的文件看起来像下面这样:
好了现在我们可以到polls/models.py中去创建表了,创建表前先简单的设计一下我们的这个投票程序。
我们将创建两个模型:问题和选择。
问题模型中有两个字段:问题字段和问题的发布日期字段。
选择模型中有三个字段:一个关联问题模型的外键(一个问题对应一个选择),选择的文本和投票计数。