- 投稿日:2020-05-16T20:15:37+09:00
DjangoでMySQLを利用する
はじめに
ここでは、djangoのデータベースとして、標準搭載されているsqliteではなく、MySQLを利用するための設定について解説します。
なお、MySQLは、MAMPでインストールしたものとします。使用するデータベースの宣言
まず、
manage.py
で、MySQLを利用する旨を以下のように明記します。manage.pyimport pymysql pymysql.install_as_MySQLdb()使用するデータベース情報の記述
そして、
settings.py
でデータベースの詳細情報を記述します。settings.pyDATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': データベース名, 'USER': (使用するデータベースの)ユーザー名, 'PASSWORD': (使用するデータベースの)パスワード, 'HOST': '/Applications/MAMP/tmp/mysql/mysql.sock', 'PORT': '8889' # MAMPの場合, } }
- 投稿日:2020-05-16T13:25:08+09:00
AWSデプロイ時MySQLエラー集
参考文献
- 共有ライブラリの依存関係のエラー
cannot open shared object file: No such file or directory
- [Linux]共有ライブラリが見つからない時にやること
- ERROR 1045 (28000): Access denied for userとなったときの対応方法
- Linux error while loading shared libraries: cannot open shared object file: No such file or directory
- mysql2 gem not working after updating to Ubuntu 16.04 - libmysqlclient.so.18
エラー① "cannot open shared object file"
LoadError: libmariadb.so.3: cannot open shared object file: No such file or directory解決策① 検索パスの設定
$export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib64解決策② 共有ライブラリの依存関係の再設定
$ cat /etc/ld.so.conf$ echo "/usr/lib64/XXXXX/lib" >/etc/ld.so.conf解決策③ MySQLのgemを再度インストール
$ bundle exec gem uninstall mysql2$ bundle installエラー② "Access denied for user"
ERROR 1045 (28000): Access denied for userとなったときの対応方法解決策① 特定のDBにのみ全権限有効なユーザを作成する
grant all privileges on 'DB名'.* to 'ユーザ名'@'ホスト名' identified by 'password' with grant option;解決策② ホスト名がRDSの場合
mysql -u 'RDSユーザ名' -p -h XXXXXXXXXX.ap-northeast-1.rds.amazonaws.com
- 投稿日:2020-05-16T00:53:33+09:00
SQL(データの追加、更新、削除)とNode.js基本
○データの追加
qiita.jsinsert into テーブル名 カラム名 values (カラム名)↑テーブルにレコードを挿入したいときはinsertを使う。
○データの更新
qiita.jsupdate テーブル名 set カラム名='新しい値', カラム名='新しい値' where 条件↑テーブルのレコードを更新したいときはupdateを使う。
※whereで更新するレコードを指定しないとカラム内の全データが更新される。
※update実行後はデータを戻すことができない○データの削除
qiita.jsdelete from テーブル名 where 条件↑テーブルからレコードを削除したいときはupdateを使う。
※whereで削除するレコードを指定しないとテーブル内の全レコードが削除されてしまう。○Node.jsとは?
・Node.jsは本来クライアント側の言語であるJavaScriptをサーバーサイドで動かすための仕組み。
expressとは?
・ExpressはNode.jsでWebアプリの開発をするためのフレームワーク。
ページの表示の仕組み
qiita.jsapp.get ('URL', (req, res) => { res.render('ファイル名') });↑URLにリクエストが来た時に、ファイル名を表示することができる。
EJSとは?
・EJSとは、HTMLとJavaScriptのコード両方を記述できるNode.jsのパッケージ
・JavaScriptのコードを記述するには、<% %>または<%= %>で囲む。
<% %>で囲んだ場合はブラウザに何も表示されないので、変数の定義などに用いる。変数の値などをブラウザに表示したい場合は<%= %>を用いる。MySQLとは?
・MySQLとは、データベースを管理するツールの一つ。
qiita.jsconst mysql = require('mysql')↑上記のようなコードでmysqlパッケージを読み込むことができる。
クエリの実行
qiita.jsconnection.query('クエリ', クエリ実行後の処理)↑Node.jsからデータベースに対してクエリを実行することができる。
・クエリ実行後の処理は2つの引数を取ることができる。
第1引数のerrorにはクエリが失敗したときのエラー情報が、第2引数のresultsにはクエリの実行結果が入る。getとpost
・画面を表示したいときはget、データベースを変更したいときはpost
リダイレクトとは
qiita.jsres.redirect('URL')↑サーバーは「次はこのURLにリクエストしてね」というレスポンスを返すことができる。このレスポンスを受け取ったブラウザは指定されたURLに自動的にリクエストする。このような別のURLに再度リクエストさせる仕組みを「リダイレクト」と言う。