python + sqlite3 名前を入力したら対応した住所をgooglemapで開く。

最近は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


Warning: Undefined array key "thumbnail_url" in /home/users/1/boy.jp-rolpop/web/skc/wp-content/themes/godios/inc/schema-org.php on line 49

Warning: Undefined array key "thumbnail_url" in /home/users/1/boy.jp-rolpop/web/skc/wp-content/themes/godios/inc/schema-org.php on line 78