ネットワーク上にある ubuntu の mysql に linux mint からアクセスしてデータを閲覧します。

そのためにはまず ubuntu 側の設定が必要です。
ubuntu の mysql 設定
ubuntu に ssh ログインして、mysql に入ります。
mysql -u root -p
ユーザー名 heno を登録。
mysql> CREATE USER heno@'192.168.0.8' IDENTIFIED BY 'moheno';
pacsdb と arrdb に対して select 権限を与えます。
mysql> GRANT SELECT ON pacsdb.* TO 'heno'@'192.168.0.8';
mysql> GRANT SELECT ON arrdb.* TO 'heno'@'192.168.0.8';
確認。
mysql> select Host, User from mysql.user;
+--------------+------------------+
| Host | User |
+--------------+------------------+
| 192.168.0.8 | heno |
| localhost | arr |
| localhost | debian-sys-maint |
| localhost | mysql.session |
| localhost | mysql.sys |
| localhost | pacs |
| localhost | phpmyadmin |
| localhost | root |
+--------------+------------------+
11 rows in set (0.00 se
linux mint から ubuntu の mysql に入る
ssh をログアウトして、linux mint のコマンドラインに戻り ubuntu の mysql にログインします。
mysql -h 192.168.0.99 -u heno -p
ログインできない場合は、ポートの開放か「mysqld.cnf」の設定をする必要があります。
以下のようにコメントアウト。
/etc/mysql/mysql.conf.d/mysqld.cnf
#bind-address = 127.0.0.1
確認。
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| arrdb |
| pacsdb |
+--------------------+
3 rows in set (0.01 sec)
heno の権限確認。
mysql> show grants for 'heno'@'192.168.0.8';
+----------------------------------------------------+
| Grants for heno@192.168.0.8 |
+----------------------------------------------------+
| GRANT USAGE ON *.* TO 'heno'@'192.168.0.8' |
| GRANT SELECT ON `pacsdb`.* TO 'heno'@'192.168.0.8' |
| GRANT SELECT ON `arrdb`.* TO 'heno'@'192.168.0.8' |
+----------------------------------------------------+
4 rows in set (0.00 sec)
試しに以下のようなクエリを実行して、抽出結果を確認。
use pacsdb;
mysql> SELECT * FROM study INNER JOIN patient ON study.patient_fk = patient.pk WHERE DATE_FORMAT(study_datetime,
'%Y-%m-%d') > '2018-09-13' ORDER BY study_datetime DESC;
各ファイルの設定
dcm01.py
from flask import Flask, render_template
import pymysql
app = Flask(__name__)
@app.route('/')
def hello():
db = pymysql.connect(
host='192.168.0.99',
user='heno',
password='moheno',
db='pacsdb',
charset='utf8',
cursorclass=pymysql.cursors.DictCursor,
)
cur = db.cursor()
sql = "SELECT * FROM study INNER JOIN patient ON study.patient_fk = patient.pk WHERE DATE_FORMAT(study_datetime, '%Y-%m-%d') > '2018-09-13' ORDER BY study_datetime DESC";
cur.execute(sql)
mbrs = cur.fetchall()
cur.close()
db.close()
return render_template('select.html', title='flask test', mbrs=mbrs)
if __name__ == "__main__":
app.run(debug=True)
templates/select.html
{% extends "layout.html" %}
{% block content %}
<h2>dicom 検査一覧</h2>
<table class="datashow">
<tr><th>pk</th><th>日付</th><th>カルテ番号</th><th>生年月日</th><th>性別</th><th>モダリティ</th><th>部位</th></tr>
{% for mbr in mbrs %}
<tr><td>{{ mbr.pk}}</td><td>{{ mbr.study_datetime}}</td><td>{{ mbr.pat_id }}</td><td>{{ mbr.pat_birthdate }}</td><td>{{ mbr.pat_sex }}</td><td>{{ mbr.mods_in_study }}</td><td>{{ mbr.study_desc }}</td></tr>
{% endfor %}
</table>
{% endblock %}
templates/layout.html
<!doctype html>
<html>
<head>
<title>{{ title }}</title>
<link rel="stylesheet" type="text/css" href="{{ url_for('static',filename='css/mystyle.css') }}">
</head>
<body>
<div id="container">
<div id="main">
{% block content %}
<!-- ここにメインコンテンツを書く -->
{% endblock %}
</div>
</div>
</body>
</html>
flask 起動
cd ~/flask
python dcm01.py
http://localhost:5000/ にアクセス。
結果は以下のようになりました。
氏名は表示しないようにしてあります。
