kuroの覚え書き

96の個人的覚え書き

Flask

Flask2.0.0(3.0.0)のBlueprintの使い方

Flask1系から2系にアップデートしたとき、blueprintの使い方がちょっと変わっていてトラブったので覚書。 manage.py ## 2系以降は不要 sqlite.db app----------+ |-__init__.py |-config.py |-models.py |-views---------+ | |-home.py | |-tools.py | |-tem…

Flaskアプリでbotのアクセスを受けたときに拒否する

Flaskのアクセスログを見ていると半分以上がbotのアクセスであった。さらに、過去に生成して、時間経過のために消去した一時ファイルを参照していたりするので、ことごとくエラーになり、無駄な処理をさせられまくっていたので特にしつこくアクセスしてくるI…

Dockerのコンテナをイメージに書き出して別のJetson Nanoに環境を移す

ここまでJetson Nano 2GBでDocker上にPython3環境を作ってきたが、32GBのSDカードだったためちょいと手狭になってきた。 JetsonNano B01のほうは128GBだったので一旦こっちに環境を移して続きの開発を行いたい。ということでDocker-composeで構築したコンテ…

XREAサーバを使う(2) Flask編

Homebrewのインストールは未完。Gitはインストールできたがcurlなど他にも対応しなければならないし、そもそもそこまでいろんなアプリを入れたいわけでもない。せいぜいblastとsamtoolsくらいなので、個別インストールしたほうが早そうなので、一旦ペンディ…

jExcelでスプレッドシートをwebアプリに仕込む(完成)

最終的にここに落ち着いた。 {% extends "base.html" %} {% import "bootstrap/wtf.html" as wtf %} {% block title %}Freezer list{% endblock %} {% block head %} {{ super() }} <link rel="stylesheet" href="https://bossanova.uk/jspreadsheet/v4/jexcel.css" type="text/css" /> </link>

jExcelでスプレッドシートをwebアプリに仕込む

以前チョロっと眺めていたjExcelを使ってウェブアプリに冷凍庫管理表を作ってみる。 javascriptなのでじつはあまり得意ではない。 しかし使い方は結構簡単そうだ。(実は実用するには結構ハードルが高いことは後でわかる) 設置方法は基本HTMLファイルにjava…

werkzeugの使い方が変わった件

$ python3 manage.py runserver Traceback (most recent call last): File "manage.py", line 2, in <module> from app import app, manager File "/Users/kuro/database/app/__init__.py", line 11, in <module> from app.models import * File "/Users/kuro/database/app/m</module></module>…

avconv (ffmpeg)でmp4ビデオを作成してwebに埋め込む

いやーはまったはまった。 ラズパイ3で作ったwebカメラアプリを3+に入れてやったところ、ほんの数ヶ月の間にソフトウェアの構成がかなり変わったらしく、いろいろ言うことを聞かない。 最後まで手こずったのはタイムラプスで撮った写真をパラパラ漫画的にビ…

flask runをデーモンサービスに

flaskで作ったwebアプリの起動を python3 manage.py runserver で行っていたが、このままではシステム立ち上げ時にそのまま起動できるようにならないので、uWSGIを介した起動をしないといけないのかなと思っていたが、flaskをpythonから読み込むのじゃなくて…

SQLからmatplotlibでグラフを作ってFlaskで表示

@app.route('/') def index(): import matplotlib.pyplot from matplotlib.backends.backend_agg import FigureCanvasAgg import io import random session = Session() q = session.query(Diff).filter(Diff.id <6).filter(Diff.id > 1).all() fig, ax = ma…

matplotlibでグラフをWeb上に表示

さて、Pythonでグラフをかけるようになったので、今度はそれをFlaskでweb上に表示させてみたい。 まえに参照したページはpython2系のコードだったようで、そのままではPython3ではエラーが出る。 なので、エラーを一つずつ潰していったところ @app.route('/'…

StringIO

matplotlibでグラフを描画するプログラムの中でcStringIOというモジュールが使われているのだけれど、Python3のモジュールには該当するものが見つからない。で、調べてみるとPython3では標準モジュールのioにStringIOが含まれているので from io import Stri…

sqlのDBからグラフを作って表示

集計してテーブルを作って、個々のデータから生データであるBAMを参照することはできるようになったが、テーブルを眺めていてもそれ以上進まないので、テーブルからグラフを描かせていきたい。https://qiita.com/5t111111/items/3d9efdbcc630daf0e48f この辺…

Bootstap的画面構成であちこち統一する

ファイルアップロードボタン周りの統一感がほしい。 https://qiita.com/nakapython/items/46d44793827920282f75 ここを参考に。 また、WTFーFlaskのhtmlの書き方は簡単に書くなら <h3>Edit</h3> <form class="form form-group form-group-sm" method="post" role="form"> {{ wtf.form_field(form.edit) }} {{ wtf.form_field(form.colum) }} {</form>…

tail -fのようにlogファイルをどんどん書き換えてwebに表示する。

https://stackoverflow.com/questions/35540885/display-the-contents-of-a-log-file-as-it-is-updated ここに出ているテクニックが使えそうなんだけど、肝心のFlaskの動作ログを開こうとすると固まってしまう。

改行を入れてコードを見やすく

あるテーブルから別のテーブルに内容をコピーしたいとき q = session.query(Test.id, Test.samp, Test.gene, Test.zygo, Test.count, Test.z_id) ins = insert(Test_temp).from_select( (Test_temp.id, Test_temp.samp, Test_temp.gene, Test_temp.zygo, Tes…

同じ動作にならないもの

q = select(["exome_temp.SampleName_phenotype, exome_temp.variant_id, exome_temp.variant_id, exome_temp.variant_id"], from_obj=['exome_temp']) ins = insert(Exome_sub2).from_select((Exome_sub2.SampleName_phenotype, Exome_sub2.variant_id, Exo…

ログ記録とflashでメッセージ

まず、お気楽にプログラム中に print('===============') print('process complete') print('===============')みたいな行を挟みまくって標準出力に表示させていたわけだが、 これだとプログラムを走らせているウインドウをずっと見ておかないとならないわけ…

Blueprintを使っているページでconfigを呼び出す

Flaskのお作法では config.pyで設定を定義しておいて UPLOAD_FOLDER = '/User/hogehoge/'__init__.pyで app = Flask(__name__) app.config.from_object('app.config')とやっておくと、メインなプログラム中で app.config['UPLOAD_FOLDER']という感じで使いま…

テーブルをexportして、ファイルとしてローカルにダウンロードなど

sample = session.query(Samples) if form.back_drop.data: outfile = open('samples.txt', 'w') outtsv = csv.writer(outfile, delimiter='\t') for record in sample.all(): outtsv.writerow([record.id, record.samplename, record.phenotype, record.alt…

csvをローカルからアップロードしてテーブルをアップデート

まずはcsvファイルをサーバにアップロードする手順から。 当初Flask-wtfからファイルをアップロードさせようと思っていたが、思いの外要領を得ないため、素のFlaskでまずは構築してみる。 http://flask.pocoo.org/docs/0.12/patterns/fileuploads/ ここを参…

nginx+uWSGIふたたび

https://qiita.com/ekzemplaro/items/a570f79de254428a151d こんどはこのページを参考に進める。まずはFlaskのアプリを適当に作成。 foovar.py from flask import Flask app = Flask(__name__) @app.route("/") def hello(): return "Hello World!" if __nam…

nginx+uWSGIでFlaskアプリをデプロイ

https://qiita.com/mykysyk@github/items/3ebbd5a787fdbefaf5e8 ここの情報に従ってまずは必要なものをインストールしていく。 ここまでのインストールでepelの部分は入っているようなので yum install nginx --enablerepo=epelflaskはすでに入れたので飛ば…

SQLite版とMySQL版の比較

Macローカルで初期画面をロードしてから、すぐにデータベースを開く操作をしてみるとSQLite版 127.0.0.1 - - [25/Dec/2017 19:24:29] "GET / HTTP/1.1" 200 - elapsed_time:0.0034799575805664062[sec] 127.0.0.1 - - [25/Dec/2017 19:24:36] "GET /exome/ H…

MySQLへの移植2

メインのデータベーステーブルexome_subが子テーブルになっていて、親テーブルexome_countからカラムを読み込んでいるときに、exome_countをDropしようとしたら Cannot delete or update a parent row: a foreign key constraint failsというエラーが出て消…

MySQLへの移植

データベースをSQLiteからMySQLに移植し始めた。出来上がったテーブルを検索したり、カラムにコメントを書き込むだけだと、SQLAlchemyのお陰で、ほとんど手を加えることなく移行ができた。しかし、データベース(テーブル)にデータを追加し、そこから情報を…

やっとリレーションの使い方がわかってきた

テーブル定義を class User_comments(Base): __tablename__ = 'user_comments' id = Column(Integer, primary_key=True, autoincrement=True) user1_comments = Column(String(255)) user2_comments = Column(String(255)) user3_comments = Column(String(2…

SelectMultipleFieldでなくBooleanFieldを使って複数選択

これまで、複数項目を選択してORで検索項目に使うとき func = SelectMultipleField('Function', choices=[('exonic', 'exonic'), ('splicing', 'splicing'),・・・・ if form.func.data: exome = exome.filter(Exome_sub.Func_wgEncodeGencodeCompV19.in_(fo…

検索条件等をアコーディオンで折りたたむ

http://kishiken.com/bootstrap/collapse.html インターフェイスをすっきりさせるべく、こちらの記事を参考に、項目の折りたたみを導入してみた。 1項目をボタンで開閉するパターンと複数項目を順に開閉するパターンを付けてみた。

実際一番時間がかかっているのは

elapsed_time:0.0021708011627197266[sec] elapsed_time:0.0022499561309814453[sec] elapsed_time:0.002342700958251953[sec] elapsed_time:0.0023527145385742188[sec] elapsed_time:0.002480745315551758[sec] elapsed_time:0.002567768096923828[sec] el…