こんにちは!
データサイエンティストでありながら最近はWeb開発に没頭しているウマたん(@statistics1012)です。
Pythonでデータベースを作成して操作することができるのをご存知でしょうか?
もちろんSQLの知識もある程度必要ですが、Pythonのsqlite3というライブラリを使えば簡易的にデータベース使えちゃいます。
是非、マスターしておきましょう!
この記事ではPythonのsqlite3を用いてデータベースを作成する方法について見ていきます。
目次
Pythonでデータベースを扱えるsqlite3とは
sqlite3はpythonでデータベースを操作するライブラリです。
基本的な記述方法はSQLが分かっていれば問題ありません。ちなみにMySQLをPythonで使う方法もあります。
sqlite3のリファレンスに関して詳細は以下のURLをご覧ください!
https://docs.python.org/ja/3.5/library/sqlite3.html
Python Sqlite3の使用方法
Sqlite3で簡単にデータベースを作成し、テーブルにデータを格納し抽出してみます。
コードは以下のようになっています。
データベースを作成
import sqlite3
dbname = 'trains.db'
conn=sqlite3.connect(dbname)
c = conn.cursor()
こちらの部分でデータベースを作成しています。conn.cursor()はデータベースに接続するためのおまじないだと思っていただければ問題ございません。
テーブルを作成
# executeメソッドでSQL文を実行する
create_table = '''create table toukeilab (id value,name verchar)'''
c.execute(create_table)
こちらで、テーブルを作成しています。テーブル上の列名を型と同時に定義します。
この時、テーブルが既に存在する場合エラーを起こしてしまうので、もしテーブルが存在する場合はテーブルを作成しないという処理を入れる必要があります。
また複数のSQL文処理を行う場合は、executeではなくexecutescriptを使う必要があります。
これらに関しては後述します。
テーブルにデータを格納
sql = 'insert into toukeilab (id, name) values (?,?)'
namelist = (1, "uma")
c.execute(sql, namelist)
conn.commit()
こちらでテーブルにデータを格納していきます。
conn.commit()ではデータの格納を保存します。
データを抽出
select_sql = 'select * from toukeilab'
c.execute(select_sql)
result=c.fetchone()
conn.close()
print(result)
こちらの部分で格納したデータを抽出していきます。
fetchoneではデータを1行抽出します。
conn.close()では、データベースへの接続を止めます。
これで簡単なデータベース作成・操作方法は終了。
続いて他のコードと組みあわせて、少し応用した実装を行っていきましょう!
Pythonで応用的なコードを実装
今回実装したいのは、ある記事情報をスクレイピングで抽出しそれらの類似度を計算した後、抽出に使ったURLと類似度をデータベースに格納して抽出するというもの。
実際にはデータベースを経由する必要はありませんが、勉強のためSqlite3を使ってみましょう。
ちなみにスクレイピングと類似度算出に関しては以下の記事でまとめているので参考にしてみてください。
コードは以下のようになっています。
前半部分ではスクレイピング・形態素解析・類似度算出を行う関数を定義しています。
その後データベース格納から抽出まで行うクラスを定義し、その中で関数を定義しています。
基本的に先ほどと変わりませんが、テーブルが既に存在する場合は消去し新たにテーブルを定義するSQL文を作成しています。
そのSQL文を実行する際はexecutescriptを使っています。
各URLに紐づくテキストの類似度をデータベースに蓄積していくなどを行うことが可能ですね!
Pythonでデータベース操作 まとめ
Pythonでデータベースを操作する方法について見てきました。
この記事では簡易的なSQL文についてのみ見てきましたが、SQL文を使えば様々なデータを作成・抽出・加工することができます。
以下の記事でSQL文の簡単な構文についてまとめていますのでよければご覧ください!
Pythonはデータ解析やスクレイピングそしてWebアプリケーション作成まで出来る幅広いプログラミング言語!
Pythonでできることは以下にまとめています!
また以下の記事で初心者がPythonを習得する方法・SQLを習得する方法についてまとめていますのでよければご覧ください!
また、データベース・データマネジメント周りの知識を体系的に付けたい人は以下の記事もしくはUdemy講座でまとめていますので是非見てみてください!
【初学者向け】データマネジメント入門!DX推進やAI 導入を支える重要な要素をDMBOKに沿ってみていこう!
【オススメ度】 | |
---|---|
【時間】 | 1.5時間 |
自分で言うのもなんですが、データマネジメントについてDMBOKに沿ってこれでもかというくらい分かりやすくまとめているつもりです!