ねこきっくぱんちのメモ帳

ITに関することいろいろめも。たまにアニメ。

Django チュートリアル1

下記参照元チュートリアルメモ

    • -

//Python 3.6.4
//venvをつかったローカル環境構築(mac)
//pip install django==1.11

    • -

・virtual environment
python3 -m venv myvenv //ディレクトリ作成
source myvenv/bin/activate //アクティベート

Djangoインストール
pip install --upgrade pip //pipはpythonのpkg管理システム
=>Successfully installed django-1.11 pytz-2018.3

・プロジェクト作成
django-admin startproject mysite.

djangogirls
├── manage.py //サイト管理用のスクリプト
└── mysite
├── __init__.py
├── settings.py //サイトの設定ファイル
├── urls.py
└── wsgi.py


・Changing settings
mysite/settings.py
LANGUAGE_CODE = 'ja-JP'
TIME_ZONE = 'Asia/Tokyo'
USE_TZ = False

・Setup a database(sqlite3)
mysite/settings.py

~$ python manage.py migrate //DB作成

・サイトの確認
python manage.py runserver
http://127.0.0.1:8000/
=> It worked!

Django models

ブログを作成する場合

//object
Post

              • -

title
text
author
created_date
published_date

//method
publish()
Djangoのモデルは特別なオブジェクトで、データベースに格納されます

・Creating an application
python manage.py startapp blog

djangogirls
├── blog
│ ├── __init__.py
│ ├── admin.py
│ ├── apps.py
│ ├── migrations
│ │ └── __init__.py
│ ├── models.py
│ ├── tests.py
│ └── views.py
├── db.sqlite3
├── manage.py
└── mysite
├── __init__.py
├── settings.py
├── urls.py
└── wsgi.py

//アプリケーションを作ったら、Djangoにそれを使うように伝えないといけません。それはmysite/settings.pyファイルの中でやります。

mysite/settings.py
INSTALLED_APPS = (
...
'blog' //add
)

・Creating a blog post model
blog/models.pyファイルでModelsと呼ばれる全てのオブジェクトを定義します。

・DBにモデル用テーブルを作る
python manage.py makemigrations blog
//新しいモデルをDBに追加
//migratinoFIleの作成

python manage.py migrate blog
//migratino実行

Django admin
blog/admin.pyファイルにPostをimport

python manage.py createsuperuser
ID: admin
mail: ~~@gmail.com
PW: password

python manage.py runserver
http://127.0.0.1:8000/admin/

//管理画面よりpostのテスト

■参考
Django Girls Tutorial(イントロダクション〜Djangoモデル)
https://djangogirlsjapan.gitbooks.io/workshop_tutorialjp/content/

iOS swiftメモ1

6.1 UI部品の配置~~~~~~~~~~~~~~

object library
・label (UILabelクラス)
・button (UIButtonクラス)

UI部品はクラス

152p
view controller scene →1画面単位


6.2 Auto Layout~~~~~~~~~~~~~~
Auto Layoutは、UI部品の配置場所に対して、
「ルール付け(constrain:制約)」を行う機能。
→ストーリボードの青線通りに、これでセンタリングされる。

Auto Layoutのメニュー
・Update Frames (自動修正:オレンジ色)
・Embed in Stack (整列)
・Align (整列)


6.3 UI部品とコードの接続~~~~~~
接続の種類
Outlet:プロパティとして接続
Action:メソッドとして接続

リアルテレコム

import UIKit


overrideとsuper

class Cat{
func run(){
print("走る")
}
}
class Cheetah: Cat {
override func run(){
print("100kmで走る")
}
}
var cheetah1 = Cheetah()
cheetah1.run()
var cat1 = Cat()
cat1.run()


var age:int? = nil
オプショナル整数型
?は「nilを取りうる値」という意味

MySQL020 ファイルを使ったやり取り(ログ・バックアップ・リストア・ロック)

chap14

sqlファイル実行
sql.txt
use db1; //これを忘れずに!
select * from tb10;
select * from csv;

mysql>
source /path/sql.txt

cmd>
$ mysql db1 -u root -proot -e "source /Users/userName/Desktop/sql.txt"

・バッチファイルにバックアップ記載しておくと楽。︎未検証。
outFile.bat
mysql db1 -u root -proot -e
"select * into outfile '/etc/bk/out.csv' fields terminated by ',' from tb10"

SQL実行結果をファイルに保存(tee)
tee log170826.txt //記録スタート
use db1;
select * from tb10;
select * from tb11;
notee //記録エンド
//ファイル格納場所は/User/UseName直下
//その他は通常のリダイレクト「コマンド > C:¥path¥log.txt」など


■バックアップ・リストア(mysqldump)
・バックアップ
cmd> mysqldump -u root -proot db1 > db1.txt
//ファイル格納場所は/User/UseName直下
//必ずアウトファイルを確認 最後は-- Dump completed on 2017-08-27 1:05:39
//文字コードなどでミスってるとリストアで失敗する。
winの場合下のオプションを付与などで対応。
mysqldump -u root -proot db1 > db1.txt --default-character-set=cp932

・リストア
cmd> mysql -u root -proot create db2 //うまくできない汗
mysql> create database db2;

cmd> mysql -u root -proot db2 < /Users/userName/db1.txt
show databases;
use db2;
show tables;
select * from tb10;

■ロックをかける(lock/unlock)
ロックの種類
・read //selectのみ可
・read local //selectのみ可(InnoDBの場合)
・write //ロックをかけたクライアント以外は全て操作不可。

lock table tb10 read;
unlock tables;

■参考
本:基礎からのMySQL

MySQL019 ファイルを使ったやり取り(テキストファイル)

chap14

■インポート

>load data infileコマンドでデータ形式を指定するオプション
・fields terminated by 区切り文字 ('¥t':tab)
・lines terminated by 改行文字 ('¥n':改行)
・ignore 最初にスキップする行 lines (0)
※()内は初期値

csvファイルのインポート
t.csv
N551,佐々木,37
N552,伊藤,41
N553,田中,31
N554,井上,43
N554,鈴木,31

load data infile '/Users/userName/Desktop/t.csv'
into table csv
fields terminated by ','; //csvなのでカンマを指定

ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv option so it cannot execute this statement //エラー

>確認
mysql> show variables like 'secure_file_priv';
mysql> SELECT @@global.secure_file_priv;

修正前(現状)
secure_file_priv NULL
1 row in set (0.00 sec)
→セキュアでないが、ローカルなのでいったんNULLから空白へ。

ぐぐるワード
・secure_file_priv
・my.cnf

>読み込まれる場所
このパスの配下に設定ファイルを配置する必要がある
$ mysql --help | grep my.cnf
order of preference, my.cnf, $MYSQL_TCP_PORT,
/etc/my.cnf /etc/mysql/my.cnf /Applications/MAMP/conf/my.cnf ~/.my.cnf

>コピー元の設定ファイル格納場所
/Applications/MAMP/Library/support-files/my-default.cnf

>コピー先
/Applications/MAMP/conf/my.cnf
//my-default.cnfからmy.cnfへリネーム

>追加内容
[mysqld]の箇所に1行
secure-file-priv = ""


ERROR 1366 (HY000): Incorrect integer value: '佐々木' for column 'uria' at row 1
mysql> show variables like 'secure_file_priv';
//データ型が異なるとエラー

新規でcsvと同じ空テーブルを作成すればおk。
2回やると2回分データはimportされる。


■エクスポート
select * into outfile '/Users/userName/Desktop/out.csv'
fields terminated by ',' from csv;

■参考
本:基礎からのMySQL
mysql公式doc
各種qiita記事

MySQL018 トランザクション

chap13

■ストレージエンジン
MySQLには大きく2つの機能に分かれる。
1)フロント処理(「接続する」「SQL内容を事前調査する」など)
2)バック処理(フロントの指示により、実際の検索やファイル操作などを行う)
2の部分をストレージエンジンという。

■ストレージエンジンの種類
テーブルごとにエンジンの種類を指定可能
MyISAM(ver5.1までのデフォ。トランザクション未対応)
InnoDB(5.5以降。トランザクション対応。) ★ほぼこれ利用
・ISAM(MyISAMの原型。古い。)
・MEMORY(データを全てメモリ上に管理。動作が高速)
・MERGE(MyISAMの複数テーブルを1つのものにして扱う)

・利用できるエンジンの確認
show engines;

■コマンド
・ストレージエンジンの確認
show create table tb10; //ENGINE=InnoDB

・ストレージエンジンの変更
alter table tb10 ENGINE=MyISAM;
alter table tb10 ENGINE=InnoDB;


トランザクション
・複数の処理をまとめて扱う機能のこと。
・結果をDB反映させることを「コミット」
・結果を反映せず戻すことを「ロールバック

トランザクション開始
start transaction;

ロールバック
rollback;

・コミット
commit;

■自動コミット機能
基本はONになっているため、常にコマンド後にcommitが実行されてる。
・offにする
set autocommit=0;

・onにする
set autocommit=1;

・途中終了した場合
create table tran (a int);
insert into tran values(100);
select * from tran;

start transaction;
update tran set a=777;
MySQLモニタ終了
→値が100に戻ってることを確認

■参考
本:基礎からのMySQL

MySQL017 トリガー

chap12

■トリガーとは
・MySQL5.0以降で利用可能。
・テーブルに対しある処理が行われると、コマンドが実行される仕組み。

■事前準備
・tb11と同じ構造で空のテーブルを用意
create table tb11m like tb11;

■トリガー作成
==============
タイミング
・before
・after

カラム値
・old.clmName
・new.clmName

注意(コマンドにより取り出せないものあり)
・INSERT 実行前× 実行後○
・DELETE 実行前○ 実行後×
・UPDATE 実行前○ 実行後○
==============

delimiter //
create trigger tr1
before delete on tb11 for each row  #tb11が削除された時
begin
insert into tb11m values(old.bang, old.nama, old.tosi);  #tb11mへ値を入れる
end //
delimiter ;

delete from tb11;

select * from tb11; //確認
select * from tb11m; //確認

■確認・削除
show triggers; //一覧で表示。sをつける。
drop trigger tr1;


・練習
月を入れると、その月の売上合計を返す関数を作成

delimiter //
create function f_uria(t int) returns int
begin
declare u int;
select sum(uria) into u from tb10 where tuki=t;
return u;
end //
delimiter ;

select f_uria(4);
select f_uria(5);
select f_uria(6);
select f_uria(2);


■参考
本:基礎からのMySQL