SSブログ

ラズパイにSQLiteをインストール pythonからアクセスしてみた [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:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。



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

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

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

イラストで理解 SQL はじめて入門

イラストで理解 SQL はじめて入門

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

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

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

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

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

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

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

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。