Sqlalchemy-core-creating-table
SQLAlchemyコア-テーブルの作成
次に、テーブル作成関数の使用方法について説明します。
SQL Expression Languageは、テーブル列に対して式を作成します。 SQLAlchemy Columnオブジェクトは、データベーステーブルの column を表し、 Table は Tableobject で表されます。 メタデータには、テーブルの定義と、インデックス、ビュー、トリガーなどの関連オブジェクトが含まれます。
したがって、SQLAlchemyメタデータのMetaDataクラスのオブジェクトは、Tableオブジェクトとそれに関連付けられたスキーマ構造のコレクションです。 Tableオブジェクトのコレクションと、エンジンまたは接続へのオプションのバインディングを保持します。
from sqlalchemy import MetaData
meta = MetaData()
MetaDataクラスのコンストラクターは、デフォルトでは None であるバインドおよびスキーマパラメーターを持つことができます。
次に、通常のSQL CREATE TABLEステートメントに似た* Tableコンストラクト*を使用して、上記のメタデータカタログ内ですべてのテーブルを定義します。
Tableクラスのオブジェクトは、データベース内の対応するテーブルを表します。 コンストラクタは、次のパラメータを取ります-
Name | Name of the table |
---|---|
Metadata | MetaData object that will hold this table |
Column(s) | One or more objects of column class |
列オブジェクトは、*データベース表*の*列*を表します。 コンストラクターは、名前、タイプ、primary_key、autoincrement、その他の制約などの他のパラメーターを取ります。
SQLAlchemyは、Pythonデータを、定義されている可能な限り最適な汎用列データ型に一致させます。 いくつかの一般的なデータ型は-
- BigInteger
- ブール値
- Date
- 日付時刻
- 浮く
- 整数
- 数値
- SmallInteger
- ひも
- Text
- Time
大学のデータベースで*学生のテーブル*を作成するには、次のスニペットを使用します-
from sqlalchemy import Table, Column, Integer, String, MetaData
meta = MetaData()
students = Table(
'students', meta,
Column('id', Integer, primary_key = True),
Column('name', String),
Column('lastname', String),
)
create_all()関数は、エンジンオブジェクトを使用してすべての定義済みテーブルオブジェクトを作成し、情報をメタデータに保存します。
meta.create_all(engine)
以下に完全なコードを示します。これにより、studentsテーブルを含むSQLiteデータベースcollege.dbが作成されます。
from sqlalchemy import create_engine, MetaData, Table, Column, Integer, String
engine = create_engine('sqlite:///college.db', echo = True)
meta = MetaData()
students = Table(
'students', meta,
Column('id', Integer, primary_key = True),
Column('name', String),
Column('lastname', String),
)
meta.create_all(engine)
create_engine()関数のecho属性が True に設定されているため、コンソールはテーブル作成用の実際のSQLクエリを次のように表示します-
CREATE TABLE students (
id INTEGER NOT NULL,
name VARCHAR,
lastname VARCHAR,
PRIMARY KEY (id)
)
college.dbは、現在の作業ディレクトリに作成されます。 Studentsテーブルが作成されているかどうかを確認するには、 SQLiteStudio などのSQLite GUIツールを使用してデータベースを開くことができます。
以下の画像は、データベースに作成された学生テーブルを示しています-