LoginSignup
1
1

More than 3 years have passed since last update.

【初心者向け】10行以内のスクリプト(4.pythonからsqlite3への接続)

Posted at

【初心者向け】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にインポートした状態です。

コードはターミナルから実行しました。

python3.7

# 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」としました。

python3.7

dbname = './dexjpus_20200501.sqlite3'
conn = sqlite3.connect(dbname)
cur = conn.cursor()

2.データの取得
「'select * from テーブル名'」を変数に格納しました。
テーブル名は、「t_dexjpus」としましたので、全データを取得するとして
all_data = 'select * from テーブル名'

python3.7
# 全データ取得
all_data = 'select  * from t_dexjpus'

3.取得したデータを表示して、接続を終了。
cur.execute(sql文の内容を格納した先程の変数)
このスクリプトでは、「cur.execute(all_data)」
for文で繰り返す

python3.7

# 取得したデータを一行ずつ表示
for row in cur.execute(all_data):
        print(row)

cur.close()
conn.close()

以上、pythonからsqlite3への接続でした。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1