ジャンゴで使用3-データベース

データベース設定

前のセクションで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

 

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
my.cnf

 

设置好字符集后,重启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数据库部分设置

 

修改后的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中去创建表了,创建表前先简单的设计一下我们的这个投票程序。

我们将创建两个模型:问题和选择。

问题模型中有两个字段:问题字段和问题的发布日期字段。

选择模型中有三个字段:一个关联问题模型的外键(一个问题对应一个选择),选择的文本和投票计数。

 

おすすめ

転載: www.cnblogs.com/caesar-id/p/12319636.html