最近はpythonとsqlite3関係の記事をいっぱい書いてます。
この動画の説明欄にいろいろリンク貼ってます。
今回の記事は、これまでの記事で作ってきたプログラムの応用になります。
Google Maps APIは使わない
今回はGoogle Maps APIは使いません。sqliteから名前を検索して、対応した住所データを取得し、それをgooglemapで開きます。使用するpythonのモジュールは以下になります。
- sqlite3
- webbrowser
勘のいいひとは何をやろうとしているのかはすぐわかると思います。webbrowser.openでグーグルマップを開くだけですね。
サンプルコード
# sqlite3、webbrowserモジュールの読み込み import sqlite3, webbrowser # データベースに接続 conn = sqlite3.connect("database.sqlite") # カーソルオブジェクトの作成 c = conn.cursor() # 名前検索 username = input("where name?: ") print('\n') # 空行 # sql select = "select * from users where name = '%s'" % username address = "" # 検索した名前からレコードを取得 for row in c.execute(select): address = row[2] break; input("openbrowser? (please enter): ") webbrowser.open('https://www.google.com/maps/search/' + address) # データベースの切断 conn.close()
このコードのポイントは20行目です。row[2]としていますがこれはsqliteデータベースのレコードがタプルになっています。
タプルのアクセス方法はリストと同じように[]になり0番目からはじまります。2番目に住所データがあるので[2]と指定しています。
webbrowser.open()の引数にグーグルマップの検索urlと住所を貼り付ければ、これで名前検索して、その人の住所がグーグルマップで勝手に開くというプログラムですね。
Qpythonを使いスマートフォンでプログラムを実行してみる
上記コードはPCでは問題なく動きますが、スマートフォンでpythonプログラムを動かすとどうなるでしょうか?気になるのはwebbrowser.open()がちゃんと動くかという事ですね。
結果やはり開きませんでした。
しかしAndroidでウェブブラウザを開く方法はあるようです。その中でいろいろ情報たどってみましたが、全てのエラー解決には至りませんでした。時間がかかりすぎているため断念しました。この作業の中で得た情報を簡単にまとめてみます。
※以下は不正確な情報が含まれている可能性があります。
Andoroidでwebbrowser.open()を成功させるためには、↓
- kiviモジュールが必要
- kiviモジュールのinstallにはcythonモジュールをインストールする必要がある。
- qpythonではなんらかの原因でcythonのインストールができない(調査中)
- pyjniusモジュールを使う方法もあるが、こちらもcythonが必要
結果的にはqpythonでcythonがインストールできない形になりました。やる気が出てきたらまた調査したいところです。
参考
QPython or Kivy for Android programming with Python – producing installable apk – Stack Overflow
コメント