So-net無料ブログ作成
  • ブログをはじめる
  • ログイン

ラズパイにSQLiteをインストール [SQLポケリ]

買ったは良いが、色々忙しくて、ほったらかしの「ラズパイ」である。
本日は、ラズパイにSQLiteを導入してみようという話題である。

普通に、raspbianをインストールしただけなら、SQLiteは入っていない。
まずは、パッケージとしてSQLiteが存在しているかどうかを検索してみる。

yumならyum searchとしてリポジトリにあるかを検索できるのだが、apt-getにはsearchコマンドがないので、apt-cacheで検索することになる。
apt-getにあまり慣れていないので、apt-get search sqlite3とかやってエラーになり、apt-getでのパッケージの検索ってどうやってやるんだっけ?と毎回調べているような気がする。
検索するときは、apt-cacheでやる。

root@raspberrypi:/home/pi# apt-cache search sqlite3
akonadi-backend-sqlite - SQLite storage backend for Akonadi
aolserver4-nssqlite3 - AOLserver 4 module: module for accessing SQLite 3 databases
bacula-common-sqlite3 - network backup service - SQLite v3 common files

以下略



sqlite3で検索しているので、なんか沢山出てきた。

sqlite3 - Command line interface for SQLite 3


これだけ入れとけばOKか。
apt-getでインストールしてみる(sudo suでroot権限取ってからやってます)。

root@raspberrypi:/home/pi# apt-get install sqlite3
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています                
状態情報を読み取っています... 完了
以下の追加パッケージがインストールされます:
  libsqlite3-0
提案パッケージ:
  sqlite3-doc
以下のパッケージが新たにインストールされます:
  sqlite3
以下のパッケージはアップグレードされます:
  libsqlite3-0
アップグレード: 1 個、新規インストール: 1 個、削除: 0 個、保留: 134 個。
1,203 kB のアーカイブを取得する必要があります。
この操作後に追加で 1,991 kB のディスク容量が消費されます。
続行しますか? [Y/n] y
取得:1 http://ftp.jaist.ac.jp/pub/Linux/raspbian-archive/raspbian stretch/main armhf libsqlite3-0 armhf 3.16.2-5+deb9u1 [493 kB]
取得:2 http://ftp.jaist.ac.jp/pub/Linux/raspbian-archive/raspbian stretch/main armhf sqlite3 armhf 3.16.2-5+deb9u1 [709 kB]
1,203 kB を 2秒 で取得しました (486 kB/s)
changelog を読んでいます... 完了
(データベースを読み込んでいます ... 現在 129121 個のファイルとディレクトリがインストールされています。)
.../libsqlite3-0_3.16.2-5+deb9u1_armhf.deb を展開する準備をしています ...
libsqlite3-0:armhf (3.16.2-5+deb9u1) で (3.16.2-5 に) 上書き展開しています ...
libsqlite3-0:armhf (3.16.2-5+deb9u1) を設定しています ...
以前に未選択のパッケージ sqlite3 を選択しています。
(データベースを読み込んでいます ... 現在 129121 個のファイルとディレクトリがインストールされています。)
.../sqlite3_3.16.2-5+deb9u1_armhf.deb を展開する準備をしています ...
sqlite3 (3.16.2-5+deb9u1) を展開しています...
sqlite3 (3.16.2-5+deb9u1) を設定しています ...
libc-bin (2.24-11+deb9u1) のトリガを処理しています ...
man-db (2.7.6.1-2) のトリガを処理しています ...


無事にインストールできた。
manのインデックスを作るのに時間がかかる感じ。数分でインストールが終了した。

sqlite3コマンドで動作確認してみる。

root@raspberrypi:/home/pi# sqlite3 test.db
SQLite version 3.16.2 2017-01-06 16:32:41
Enter ".help" for usage hints.
sqlite> create table foo (a integer,b text);
sqlite> insert into foo values(1,'test');
sqlite> select * from foo;
1|test
sqlite> 


よし、動いている(rootでやることなかったかも)。

ラズパイといえば、Pythonだよな。ということで、pythonからsqlite3を使ってみる。

import sqlite3


でsqlite3モジュールをインポートして、

con = sqlite3.connect('/home/pi/test.db')


で接続を作って、

cur = con.cursor()


で、カーソルを作って、

cur.execute('SELECT * FROM foo')


で、カーソルのexecuteメソッドでSQL命令を実行できるらしい。
カーソルから実行結果を得るには、以下のように

for row in cur:
        print(row[0], row[1])


for文を回せばOKらしい。
最後に、con.close()で接続を切っておしまい。

以下は、作成したpythonスクリプトである。

import sqlite3

con = sqlite3.connect('/home/pi/test.db')
cur = con.cursor()
cur.execute('SELECT * FROM foo')
for row in cur:
        print(row[0], row[1])
con.close()


しかし、ここに大きな落とし穴が。
完成したので、実行すると、エラーが。

pi@raspberrypi:~ $ python sqlite3.py
Traceback (most recent call last):
  File "sqlite3.py", line 1, in 
    import sqlite3
  File "/home/pi/sqlite3.py", line 3, in 
    con = sqlite3.connect('/home/pi/test.db')
AttributeError: 'module' object has no attribute 'connect'


sqlite3やconnectの綴間違えてないよなぁ。
sqlite3は標準モジュールに入っているから別途インストールする必要なしって書いてあるし。

「AttributeError: 'module' object has no attribute 'connect'」

で検索してみたら、謎が解けた。
スクリプトのファイル名がまずかったようである。

sqlite3.py -> testsqlite3.py


sqlite3モジュールをインポートして使いたい場合は、ファイル名にsqlite3は使っちゃダメ、ということらしい。
実行したら、ちゃんとSELECT命令が実行できた。

pi@raspberrypi:~ $ python testsqlite3.py 
(1, u'test')




[改訂第4版]SQLポケットリファレンス

[改訂第4版]SQLポケットリファレンス

  • 作者: 朝井 淳
  • 出版社/メーカー: 技術評論社
  • 発売日: 2017/02/18
  • メディア: 単行本(ソフトカバー)







関連記事
SQLポケットリファレンスの歴史
SQLポケットリファレンスの歴史その2
第4版には電子版もあります。
SQLポケットリファレンスが第4版になりました
改訂第4版 SQLポケットリファレンス電子版

サイト内を検索

nice!(0)  コメント(0) 
共通テーマ:携帯コンテンツ

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。


AREarthroidPro ARで地球を表示するアプリ

Copyright Atsushi Asai Google+朝井淳
[改訂第4版]SQLポケットリファレンス

[改訂第4版]SQLポケットリファレンス

  • 作者: 朝井 淳
  • 出版社/メーカー: 技術評論社
  • 発売日: 2017/02/18
  • メディア: 単行本(ソフトカバー)

[データベースの気持ちがわかる]SQLはじめの一歩 (WEB+DB PRESS plus)

[データベースの気持ちがわかる]SQLはじめの一歩 (WEB+DB PRESS plus)

  • 作者: 朝井 淳
  • 出版社/メーカー: 技術評論社
  • 発売日: 2015/03/03
  • メディア: 単行本(ソフトカバー)

Access クエリ 徹底活用ガイド ~仕事の現場で即使える

Access クエリ 徹底活用ガイド ~仕事の現場で即使える

  • 作者: 朝井 淳
  • 出版社/メーカー: 技術評論社
  • 発売日: 2018/05/25
  • メディア: 大型本