はじめに
この記事では、サンプルソースを使いながらPythonのsqlite3を使ってテーブル作成を行う処理について説明します。
前提条件
- SQLの基本知識があること
- SQLiteの操作ができること
SQLite(sqlite3)の操作方法については以下の記事にまとめています。興味のある方はご覧ください。
工事中
テーブルの作成(CREATE TABLE)
ソースの説明
それでは簡単なCREATE文のサンプルソースを作ってみましょう。下のソースが「 sample.db 」上に「TEST」というテーブルを作るソースです。
処理の細かい説明をしていくと1行目の「import sqlite3」で「 sqlite3 」のライブラリをインポートして使える状態にします。
import sqlite3
そして、 「sqlite_create1.py」と同じ階層の「sample.db」というファイルに接続しに行きます。もし、 「sample.db」 が存在しなかったら新しくファイルを作ります。
まぁ、この辺は処理はおまじないだと思って問題ないと思います。ここで重要なのはデータベースファイルなので
もし、任意のファイル名にしたかったら「sample.db」を好きな名前に書き換えてください。
con = sqlite3.connect('./sample.db')cur = con.cursor()
6行目で実際にクエリを実行しています。以下のような定義のテーブルを作成しています。型については「工事中」でまとめています。
カラム名 | 型 |
id | integer |
name | text |
CREATE TABLE TEST(id integer,name text)
それでは実際に実行してみましょう。まず実行前に「 sqlite_create1.py 」が格納されているフォルダを確認しておきます。

そして、「python sqlite_create1.py」でプログラムを実行します。

そうすると、「sample.db」というファイルが作成されているのが分かります。

次に 「sample.db」の中身を見ていきましょう。
コマンドプロンプトから「sqlite.exe」を使って接続します。
接続出来たら「.table」で「sample.db」上のテーブルを確認します。「TEST」というテーブルが作成されていますね。
その次に、「.schema TEST」でTESTテーブルの定義が確認できます。先ほど実行した「 python sqlite_create1.py 」のCREATE文と一致していますね。

2回目に実行するとエラーになる
これで、Pythonの sqlite3 を使ったプログラムの完成です。
と言いたいところなのですが、、、、
実は、今まで説明したCREATE文だと次に動かしたときにエラーが出ます。
sqlite3.OperationalError: table TEST already exists
要は、既に「TEST」というテーブルが存在しますよというエラーです。これを回避するためには次の章で説明する「IF NOT EXISTS」を使います。

既にテーブルが存在する場合のテーブル作成(CREATE TABLE IF NOT EXISTS)
先ほどの「 python sqlite_create1.py 」を実行すると既に「TEST」というテーブルが存在するのでエラーになりました。そこで「CREATE TABLE」の後に「IF NOT EXISTS」を追加してあげます。
スポンサーリンク
これで「TEST」テーブルが存在しなかったら新しく作るようになります。
それでは、実際に動かしてみます。先ほど作った「sample.db」は削除しておきます。

そして、「 sqlite_create2.py 」を実行します。

「sample.db」が作成されました。

先ほどと同じく確認をするとテーブルが定義されています。

それでは、もう一度実行してみます。今回は正常に終了しました。

まとめ
テーブルの作成をするときは「 CREATE TABLE 」を使う
プログラムで動かすときは複数回動かすことを想定して「 IF NOT EXISTS 」で制御しておいたほうが良い