注目キーワード

【Python】SQLite(sqlite3)CREATE TABLE文のサンプルソース

はじめに

この記事では、サンプルソースを使いながら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行目で実際にクエリを実行しています。以下のような定義のテーブルを作成しています。型については「工事中」でまとめています。

カラム名
idinteger
nametext
CREATE TABLE TEST(id integer,name text)

それでは実際に実行してみましょう。まず実行前に「 sqlite_create1.py 」が格納されているフォルダを確認しておきます。

sqlite_create1.py 実行前

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

sqlite_create1.py 実行

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

sqlite_create1.py 実行後

次に 「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 実行前

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

qlite_create2.py 実行

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

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

内容確認

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

まとめ

テーブルの作成をするときは「 CREATE TABLE 」を使う

プログラムで動かすときは複数回動かすことを想定して「 IF NOT EXISTS 」で制御しておいたほうが良い