トップ «前の日記(2017/06/26) 最新 次の日記(2017/06/28)» 編集

kaztomo日記


2017/06/27

_ [SQL]別の sqlite3 プロセスから last_insert_rowid() できない?!

自前で TICK データを取得して sqlite3 DB 化しているので、 別プロセスから sqlite3 を起動して最新の close 値を読み出したいと思った。

当初

sqlite3 USDJPYm1.db 'SELECT close FROM hd ORDER BY Date desc, Time desc limit 1'

としていたけど、極稀に

database is locked

というエラーが出てしまっていた (+_+)

どうやら TICKデータを扱うプロセスの方で DBを専有する時間に対して、上記の select 文が が長いためにロックエラーになっているんじゃないかと想像する。

上述の SQL文の目的は「最新の close値を取得する」ことなので、色々とググって見たところ

sqlite3 USDJPYm1.db 'SELECT close FROM hd WHERE rowid=last_insert_rowid()'

とすることで、「最後に insertした行を取得する」ことが出来るらしい。

しかし、last_insert_rowid() の値は ゼロ しか返ってこない (>_<) どうやら、自プロセスが「最後に insert」するなら取得できるけど、 別プロセスからは「他プロセスが最後に insert」した rowid は見つけられないみたい (*_*)

更にググってみたら、下記 SQL文で目的を果たすことが出来た\(^o^)/

sqlite3 USDJPYm1.db 'SELECT close FROM hd WHERE id=(SELECT max(rowid) FROM hd)'

参考にさせて頂いたサイト:

_ [FreeBSD][Python]ただ何となく FreeBSD-10.3R に TensorFlow-1.2.0 を入れてみた。

ネットサーフィンしている途中で、たまたま見つけた サイトの情報 を元に Python2.7 をインストールしている FreeBSD-10.3R 向けに TensorFlow を入れてみた。

  • サイトの情報を元に、py27-backports.weakref-1.0.r1.txz と py27-tensorflow-1.2.0.txz をダウンロードしてくる。11.0R であれば Python3.6向けのパッケージもある。
  • pkg を使ってインストール。pkg install時に付随するパッケージも一緒にインストールする。
sudo pkg install py27-backports.weakref-1.0.r1.txz
sudo pkg install tensorflow-1.2.0.txz
  • Jupyter Notebook から使えるか試してみる
In [1]: import tensorflow as tf
        hello = tf.constant('Hello, TensorFlow!')
        sess = tf.Session()
        print(sess.run(hello))
Out[1]: Hello, TensorFlow!

\(^o^)/