SQLAlchemy-方言
SQLAlchemyは、方言のシステムを使用して、さまざまなタイプのデータベースと通信します。各データベースには、対応するDBAPIラッパーがあります。すべての方言では、適切なDBAPIドライバーがインストールされている必要があります。
以下の方言がSQLAlchemyAPIに含まれています-
- Firebird
- Microsoft SQL Server
- MySQL
- Oracle
- PostgreSQL
- SQL
- Sybase
URLに基づくEngineオブジェクトは、create_engine()関数によって生成されます。これらのURLには、ユーザー名、パスワード、ホスト名、およびデータベース名を含めることができます。追加の構成のために、オプションのキーワード引数がある場合があります。ファイルパスが受け入れられる場合もあれば、「データソース名」が「ホスト」と「データベース」の部分を置き換える場合もあります。データベースURLの一般的な形式は次のとおりです-
dialect+driver://username:password@host:port/database
PostgreSQL
PostgreSQL方言は psycopg2デフォルトのDBAPIとして。pg8000は、以下に示すように、純粋なPythonの代替としても利用できます。
# default
engine = create_engine('postgresql://scott:tiger@localhost/mydatabase')
# psycopg2
engine = create_engine('postgresql+psycopg2://scott:tiger@localhost/mydatabase')
# pg8000
engine = create_engine('postgresql+pg8000://scott:tiger@localhost/mydatabase')
MySQL
MySQL方言は mysql-pythonデフォルトのDBAPIとして。次のようなMySQL-connector-pythonなど、利用可能なMySQLDBAPIは多数あります。
# default
engine = create_engine('mysql://scott:tiger@localhost/foo')
# mysql-python
engine = create_engine('mysql+mysqldb://scott:tiger@localhost/foo')
# MySQL-connector-python
engine = create_engine('mysql+mysqlconnector://scott:tiger@localhost/foo')
オラクル
オラクル方言は cx_oracle 次のようにデフォルトのDBAPIとして-
engine = create_engine('oracle://scott:[email protected]:1521/sidname')
engine = create_engine('oracle+cx_oracle://scott:tiger@tnsname')
Microsoft SQL Server
SQLServer方言は pyodbcデフォルトのDBAPIとして。pymssqlも利用できます。
# pyodbc
engine = create_engine('mssql+pyodbc://scott:tiger@mydsn')
# pymssql
engine = create_engine('mssql+pymssql://scott:tiger@hostname:port/dbname')
SQLite
SQLiteは、Python組み込みモジュールを使用して、ファイルベースのデータベースに接続します sqlite3デフォルトでは。SQLiteはローカルファイルに接続するため、URL形式は少し異なります。URLの「ファイル」部分は、データベースのファイル名です。相対ファイルパスの場合、これには以下に示すように3つのスラッシュが必要です-
engine = create_engine('sqlite:///foo.db')
また、絶対ファイルパスの場合、以下に示すように、3つのスラッシュの後に絶対パスが続きます。
engine = create_engine('sqlite:///C:\\path\\to\\foo.db')
SQLite:memory:databaseを使用するには、以下のように空のURLを指定します-
engine = create_engine('sqlite://')
結論
このチュートリアルの最初の部分では、式言語を使用してSQLステートメントを実行する方法を学習しました。式言語は、SQL構造をPythonコードに埋め込みます。第2部では、SQLAlchemyのオブジェクト関係マッピング機能について説明しました。ORM APIは、SQLテーブルをPythonクラスにマップします。