SQLAlchemyは、Pythonで構築されたSQLツールであり、高性能データベースを設計および管理するための強力な機能を開発者に提供します。
SQLAlchemyの使用方法を簡単に説明してから、Pythonドメイン言語の快適さの中で生のSQLステートメントを実行する方法について詳しく説明します。
SQLAlchemyの使用
すべてのPythonライブラリと同様に、SQLAlchemyをインストールすることから始めます。インストールしたら、Pythonで楽しみを始めることができます。
次に、sqlalchemy
をインポートします 次に、いくつかのモジュールをインポートして、SQLAlchemyデータベースエンジンに簡単にアクセスできるようにします。
import sqlalchemy
from sqlalchemy import create_engine
from sqlalchemy import Table, Column, Integer, String, MetaData, ForeignKey
from sqlalchemy import inspect
create_engine
に加えて 、新しいテーブルを作成するために必要ないくつかの追加モジュールもインポートしています。ただし、その前に、.__version__
を呼び出して、SQLAlchemyがインストールされ、インポートされ、機能していることを確認してください。 そのように:
print sqlalchemy.__version__
Out[*]: 1.0.9
SQL式言語であるSQLAlchemyの基本機能を使用して、metadata
を作成します。 これには、新しいbook
を定義する多数の関連モジュール(またはオブジェクト)が含まれます。 データベーステーブル:
metadata = MetaData()
books = Table('book', metadata,
Column('id', Integer, primary_key=True),
Column('title', String),
Column('primary_author', String),
)
engine = create_engine('sqlite:///bookstore.db')
metadata.create_all(engine)
上部にmetadata
を定義します 、次にそれをTable()
に渡します メソッド。テーブルにbook
という名前を付けます。 。この中で、データ型やprimary_key
などの重要な属性とともに、各列を定義します。 。
テーブルが定義され、metadata
に関連付けられたら オブジェクトの場合、接続できるデータベースエンジンを作成する必要があります。これは、create_engine
を使用して実行されます 機能。
engine = create_engine('sqlite:///bookstore.db')
この例では、単純なSQLite
を使用します データベース。 MySQLやPostgreSQLなどの他のエンジンの接続文字列を使用することもできます。 PostgreSQL用のエンジンを作成するための構文例は次のとおりです。
engine = create_engine('postgresql://user:password@host/database')
エンジンを作成したら、.create_all()
を使用する必要があります。 metadata
のメソッド オブジェクトを作成し、engine
を渡します これに接続すると、上記のようにSQLAlchemyがテーブルを自動的に生成します。
これで、適切と思われるテーブルを使用できます。この簡単な例では、inspect
を使用します 列を表示し、テーブルが正常に作成されたことを確認するモジュール:
inspector = inspect(engine)
inspector.get_columns('book')
Out[*]:
[{'autoincrement': True,
'default': None,
'name': u'id',
'nullable': False,
'primary_key': 1,
'type': INTEGER()},
{'autoincrement': True,
'default': None,
'name': u'title',
'nullable': True,
'primary_key': 0,
'type': VARCHAR()},
{'autoincrement': True,
'default': None,
'name': u'primary_author',
'nullable': True,
'primary_key': 0,
'type': VARCHAR()}]
案の定、.get_columns()
を使用します book
のメソッド 表を見ると、3つの列が生成されていることがわかります。
基本が整ったら、SQLAlchemyを使用して生のSQLを実行してみることができます。
生のSQLを実行する1つの方法は、text
を使用することです。 モジュール、またはTextual SQL
。 text
を使用する最も読みやすい方法 モジュールをインポートし、engine
に接続した後 、text
を定義します .execute
を使用する前のSQLステートメント文字列 実行するには:
from sqlalchemy.sql import text
with engine.connect() as con:
data = ( { "id": 1, "title": "The Hobbit", "primary_author": "Tolkien" },
{ "id": 2, "title": "The Silmarillion", "primary_author": "Tolkien" },
)
statement = text("""INSERT INTO book(id, title, primary_author) VALUES(:id, :title, :primary_author)""")
for line in data:
con.execute(statement, **line)
ここでは、text()
を使用して、2つのレコードをデータベースに挿入しています。 -定義されたステートメント。
別の方法は、text()
の使用をスキップすることです。 生のSQL文字列を.execute()
に渡します 方法。たとえば、ここでは.execute()
を使用します 上に挿入した新しいレコードを表示するには:
with engine.connect() as con:
rs = con.execute('SELECT * FROM book')
for row in rs:
print row
Out[*]:
(4, u'The Hobbit', u'Tolkien')
(5, u'The Silmarillion', u'Tolkien')
あります! SQLAlchemyで生のSQLステートメントを実行するためのシンプルで効果的なメソッド。