Sqlalchemy-dialects
SQLAlchemy-方言
SQLAlchemyは方言のシステムを使用して、さまざまなタイプのデータベースと通信します。 各データベースには、対応するDBAPIラッパーがあります。 すべての方言では、適切なDBAPIドライバーがインストールされている必要があります。
次の方言がSQLAlchemy APIに含まれています-
- 火の鳥
- Microsoft SQL Server
- MySQL
- オラクル
- PostgreSQL
- SQL
- Sybase
URLに基づくエンジンオブジェクトは、create_engine()関数によって生成されます。 これらのURLには、ユーザー名、パスワード、ホスト名、データベース名を含めることができます。 追加の構成用のオプションのキーワード引数があります。 ファイルパスが受け入れられる場合もあれば、「データソース名」が「ホスト」と「データベース」の部分を置き換える場合もあります。 データベースURLの典型的な形式は次のとおりです-
dialect+driver://username:password@host:port/database
PostgreSQL
PostgreSQLダイアレクトは、デフォルトのDBAPIとして psycopg2 を使用します。 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ダイアレクトは、デフォルトのDBAPIとして mysql-python を使用します。 次のようなMySQL-connector-pythonなど、多くのMySQL DBAPIが利用可能です-
# 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')
オラクル
Oracleの方言は、次のようにデフォルトのDBAPIとして cx_oracle を使用します-
engine = create_engine('oracle://scott:[email protected]:1521/sidname')
engine = create_engine('oracle+cx_oracle://scott:tiger@tnsname')
Microsoft SQL Server
SQL Serverの方言は、デフォルトのDBAPIとして pyodbc を使用します。 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ステートメントを実行する方法を学びました。 式言語は、PythonコードにSQLコンストラクトを埋め込みます。 後半では、SQLAlchemyのオブジェクトリレーションマッピング機能について説明しました。 ORM APIは、SQLテーブルをPythonクラスにマップします。