【初心者向け】10行以内のスクリプト(4.pythonからsqlite3への接続)
pythonで色々なライブラリを使えば、「少ないコードでもちょっとした事が出来て、少なければ5行程でもちょっとしたスクリプトが作れ、便利だな。」
と思ったので、pythonやその他、コマンドを羅列しただけのものも出てくるかも知れませんが、10行程のスクリプトを不定期で投稿してみようと思います。
第4回として、pythonからのsqlite3への接続を投稿したいと思います。
pytho3からsqlite3のデータをカーソルで取得・表示するスクリプト
sqlit3はサーバを動かさくてもsql文で検索が出来、ファイルをコピーすれば他の環境でも使え、また最近は機能も増えてきて、分析関数等も使える様です。
pythonでも特別なライブラリ等を用意しなくても、pythonからsqlite3に接続出来ます。
ただ、sqlite3の標準のインターフェースはシンプルで良いのですが、少し長い文や途中で間違えた等となると、正直なところ、入力が面倒だと感じる事があります。
shellスクリプトでも良いのですが、「何かスクリプトにすれば、検索が少し楽になるかな?」と思ったので、pythonからsqlite3への接続を投稿したいと思います。
pytho3からsqlite3のデータをカーソルで取得・表示するスクリプト
【環境】
Linux: DISTRIB_DESCRIPTION="Netrunner Core 20.01"
python: 3.7
conda: 4.8.3
sqlite3: 3.31.1
因みにこのスクリプトを実行したディストリビューションは、聞き慣れないかも知れませんが、debian系です。また仮想環境も以前使っていたcondaが入っていたのですが、最近、pip3でvenvに移行したので、基本的なオペレーションを思い出すのに、一瞬戸惑ってしまいました。
データは、fredからpandase-datareaderでダウンロード、csvへ書き込んだファイルを使用したいと思います。
データは、事前にsqlite3にインポートした状態です。
コードはターミナルから実行しました。
# pythonからsqlite3に接続
# 全データを取得、表示
# データベース名= './dexjpus_20200501.sqlite3'
# テーブル名= 't_dexjpus'
#
import sqlite3
# データベース接続の定義
dbname = './dexjpus_20200501.sqlite3'
conn = sqlite3.connect(dbname)
cur = conn.cursor()
# df = pd.read_sql( 'select * from t_dexjpus;' ,conn)
# 全データ取得
all_data = 'select * from t_dexjpus'
# 取得したデータを一行ずつ表示
for row in cur.execute(all_data):
print(row)
cur.close()
conn.close()
1.データベース接続の定義
sqlite3の場合、データをインポートしたファイル名を記述
このデータベースは、カレントディレクトリに「dexjpus_20200501.sqlite3」として作りましたので、このスクリプトでは、
しましたので、データベース名は 「dexjpus_20200501.sqlite3」としました。
dbname = './dexjpus_20200501.sqlite3'
conn = sqlite3.connect(dbname)
cur = conn.cursor()
2.データの取得
「'select * from テーブル名'」を変数に格納しました。
テーブル名は、「t_dexjpus」としましたので、全データを取得するとして
all_data = 'select * from テーブル名'
# 全データ取得
all_data = 'select * from t_dexjpus'
3.取得したデータを表示して、接続を終了。
cur.execute(sql文の内容を格納した先程の変数)
このスクリプトでは、「cur.execute(all_data)」
for文で繰り返す
# 取得したデータを一行ずつ表示
for row in cur.execute(all_data):
print(row)
cur.close()
conn.close()
以上、pythonからsqlite3への接続でした。