読者です 読者をやめる 読者になる 読者になる

記録として残しておきたいブログ

初めてブログやります。主にゲームやプログラミングについて書こうと思っております。今は更新が多めだと思います

MySQL データベースとユーザーの作成

環境

Raspberry pi3
OS: Raspbian jessie lite
MySQL: 5.5.54-0+deb8u1 (Raspbian)

やること

1.データベースの作成
2.ユーザーの作成
3.権限の付与
4.パスワードの設定


データベースの作成

rootでログインする

例)testdb という名前のデータベースの作成

mysql> create database testdb;

ユーザの作成

(1)ユーザの作成、権限付与
例)user1という名前のユーザを作成

・user1は testdbのすべてのテーブルにアクセス可能
・uesr1は権限付与以外の権限を持っている

mysql> GRANT ALL ON testdb.* TO user1@localhost;


(2)設定を反映

mysql> FLUSH PRIVILEGES;


(3)作成したユーザにパスワードを設定する
例)user1のパスワードに「password」を設定する

mysql> SET PASSWORD FOR user1@localhost=password('password');


参考サイト
MySQL/ユーザとDB作成 - MinacoWiki

【メモ】MySQLdbをimportできるようになるまでのコマンド

環境

Raspberry pi3
OS: Raspbian jessie lite

PythonからMySQLに接続したくて躓いた

f:id:tmg1998:20170409004309p:plain

PythonからMySQLに接続するための準備として mysqlclient をpipでインストールしたかったけど、なんかできなかった


いろいろ調べながらコマンドうってて、どのコマンドによってできるようになったのかがよくわからないから実行したコマンドを載せておく

$ sudo apt-get install python-pip

$ sudo apt-get install python-dev python3-dev

$ sudo apt-get install libmysqlclient-dev

$ pip install -U pip

$ easy_install -U setuptools

$ sudo apt-get install python-mysqldb

$ pip3 install mysqlclient

とりあえず、できてよかった(?)




参考にしたサイトはたくさんあってよくわかりませんでした。

外部のネットワークに接続できない

環境

Raspberry pi3
OS: Raspbian jessie lite

ping google.com でエラーになる

外部のネットワークに接続できない...

pi@raspberrypi:/etc $ ping google.com
connect: Network is unreachable

デフォルトゲートウェイが正しく設定できていなかった

 外部と通信するための出入り口


/etc/network/interfaces に設定を記述することで解決した


ゲートウェイの確認をしてみた

pi@raspberrypi:/usr/bin $ route -v
カーネルIP経路テーブル
受信先サイト    ゲートウェイ    ネットマスク   フラグ Metric Ref 使用数 インタフェース
192.168.3.0     *               255.255.255.0   U     303    0        0 wlan0

ゲートウェイが'*'だと、設定できていないらしい

あれ、 /etc/dhcpcd.conf に書いたんだけどな

# /etc/dhcpcd.conf
static domain_name_servers=192.168.3.1

設定が反映されていないっぽい?


/etc/network/interfaces にゲートウェイの設定を記述する

固定IPにしていて、設定する場合

manual を static にする
address, netmask, gateway を追加する

# /etc/network/intetfaces
...
allow-hotplug wlan0
iface wlan0 inet static
    wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
    address 192.168.3.14
    netmask 255.255.255.0
    gateway 192.168.3.1


再起動する

外部と通信でるようになった

pi@raspberrypi:~ $ ping google.com
PING google.com (216.58.221.14) 56(84) bytes of data.
64 bytes from nrt13s38-in-f14.1e100.net (216.58.221.14): icmp_seq=1 ttl=55 time=5.90 ms
64 bytes from nrt13s38-in-f14.1e100.net (216.58.221.14): icmp_seq=2 ttl=55 time=9.36 ms
64 bytes from nrt13s38-in-f14.1e100.net (216.58.221.14): icmp_seq=3 ttl=55 time=29.5 ms


参考サイト
weworkweplay.com

CentOS スクリプトを定期的に実行する crontab

環境

OS: CentOS7
Python: 3.6.0
Vagrant上にある

CentOS7で定期的に実行する

これは定期的になにか取得したり、投稿したりしたいときに使えるかも

crontabというものを使う。

cron の設定ガイドをみながらやってみた

crontab -e

で設定を行う

20 02 * * 1 $HOME/.pyenv/shims/python 実行したいファイル

pyenvの場合、$HOME/.pyenv/shims/pythonで実行しないといけないらしい
デフォルトでは、システムにインストールされているpythonで実行されてしまうため

参考サイト
【Python】cronでpyenv環境のPythonが実行されない時の対処法 | あずみ.net

Python Pyhtonからtwitterを使ってみる

環境

Python: 3.6.0
Vagrant上にある

Pythontwitterを使うには

python-twitter というものを使う
python-twitter 3.2.1 : Python Package Index

インストール
pip install twitter-python
Twitter APIの使用の準備

以下のサイトを参考にしました
Twitterのbotをpythonで作成する手順 - Qiita


Twitter Application Managementにアクセスして「Create New App」を押す

こんな感じで入力する

f:id:tmg1998:20170320003637p:plain

Twitterを使用するための値を取得
Consumer Key (API Key)
Consumer Secret (API Secret)
Access Token
Access Token Secret
の4つを取得する

Pythonからツイートしてみる

import twitter

api = twitter.Api(
    consumer_key=取得した Consumer Key,
    consumer_secret=取得した Consumer Secret,
    access_token_key=取得した Access Token,
    access_token_secret=取得した Access Token Secret
)

api.PostUpdate("I love python-twitter!")


これだけで、もうツイートできてしまう。

簡単すぎる...


これで定期的にツイートとかできる!!!!!

Python その日が今年の何週目か datetime

環境

OS: CentOS7
Python: 3.6.0
Vagrant上にあるもの

今日が今年の何週目にあたるか

datetime.isocalendar()でその日が何週目かわかるらしい

8.1. datetime — 基本的な日付型および時間型 — Python 3.6.1 ドキュメント

>>> from datetime import datetime
>>> today = datetime.now()
>>> today
datetime.datetime(2017, 3, 18, 7, 17, 51, 7953)
>>> today.isocalendar()
(2017, 11, 6)
>>>

2017が年、11が週番号、6が曜日となっている

datetime.isocalendar()について

その年の最初の木曜日がある日が1週目になるらしい
2017年の最初の木曜日は1/5(木)のため、
1週目は2017/1/2(月)から2017/1/8(日)となる

2017年1月1日(日)は2016年の52週目だった

>>> from datetime import datetime
>>> datetime(2016, 12, 31).isocalendar()
(2016, 52, 6)
>>> datetime(2017, 1, 1).isocalendar()
(2016, 52, 7)
>>> datetime(2017, 1, 2).isocalendar()
(2017, 1, 1)
>>> datetime(2017, 3, 18).isocalendar()
(2017, 11, 6)
>>>

ちょっと不思議

メモ

指定した日付のdatetimeの生成

>>> from datetime import datetime
>>> testDate = datetime(2017, 3, 18)
>>> testDate
datetime.datetime(2017, 3, 18, 0, 0)
>>>