Sqlalchemy-dialects

提供:Dev Guides
移動先:案内検索

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クラスにマップします。