day 12 pythonエッセイ勉強中
6179 ワード
SQLAlchemyはPythonプログラミング言語の下のORMフレームワークで、データベースAPIの上に構築され、リレーショナルオブジェクトマッピングを使用してデータベース操作を行います.簡単に言えば、オブジェクトをSQLに変換し、データAPIを使用してSQLを実行し、実行結果を取得します.
DialectはデータAPIと交流するために用いられ、プロファイルによって異なるデータベースAPIを呼び出し、データベースに対する操作を実現する.
ステップ1:
Engine/ClonectionPooling/Dialectを使用してデータベース操作を行い、EngineはConnectionPoolingを使用してデータベースに接続し、Dialectを使用してSQL文を実行します.
注意:データベース接続の表示:show status like'Threads%';
ステップ2:
データベース操作は、Schema Type/SQL Expression Language/Engine/ClonectionPooling/Dialectを使用して行います.Engineは、Schema Typeを使用して特定の構造オブジェクトを作成し、SQL Expression Languageを使用してそのオブジェクトをSQL文に変換し、ConnectionPoolingを使用してデータベースに接続し、Dialectを使用してSQLを実行し、結果を取得します.
詳細は、次のとおりです.
http://www.jianshu.com/p/e6bba189fcbd
http://docs.sqlalchemy.org/en/latest/core/expression_api.html
注意:SQLAlchemyはテーブル構造を変更できません.必要に応じてSQLAlchemy開発者がオープンソースの別のソフトウェアAlembicを使用して完了できます.
DialectはデータAPIと交流するために用いられ、プロファイルによって異なるデータベースAPIを呼び出し、データベースに対する操作を実現する.
MySQL
-
Python
mysql
+
mysqldb:
/
/
:@[:]
/
pymysql
mysql
+
pymysql:
/
/
:@
/
[?]
MySQL
-
Connector
mysql
+
mysqlconnector:
/
/
:@[:]
/
cx_Oracle
oracle
+
cx_oracle:
/
/
user:
pass
@host:port
/
dbname[?key
=
value&key
=
value...]
:http:
/
/
docs.sqlalchemy.org
/
en
/
latest
/
dialects
/
index.html
ステップ1:
Engine/ClonectionPooling/Dialectを使用してデータベース操作を行い、EngineはConnectionPoolingを使用してデータベースに接続し、Dialectを使用してSQL文を実行します.
#!/usr/bin/env python
# -*- coding:utf-8 -*-
from
sqlalchemy
import
create_engine
engine
=
create_engine(
"mysql+mysqldb://root:[email protected]:3306/s11"
, max_overflow
=
5
)
engine.execute(
"INSERT INTO ts_test (a, b) VALUES ('2', 'v1')"
)
engine.execute(
"INSERT INTO ts_test (a, b) VALUES (%s, %s)"
,
((
555
,
"v1"
),(
666
,
"v1"
),)
)
engine.execute(
"INSERT INTO ts_test (a, b) VALUES (%(id)s, %(name)s)"
,
id
=
999
, name
=
"v1"
)
result
=
engine.execute(
'select * from ts_test'
)
result.fetchall()
#!/usr/bin/env python
# -*- coding:utf-8 -*-
from sqlalchemy import create_engine
engine = create_engine("mysql+mysqldb://root:[email protected]:3306/s11", max_overflow=5)
#
with engine.begin() as conn:
conn.execute("insert into table (x, y, z) values (1, 2, 3)")
conn.execute("my_special_procedure(5)")
conn = engine.connect()
#
with conn.begin():
conn.execute("some statement", {'x':5, 'y':10})
注意:データベース接続の表示:show status like'Threads%';
ステップ2:
データベース操作は、Schema Type/SQL Expression Language/Engine/ClonectionPooling/Dialectを使用して行います.Engineは、Schema Typeを使用して特定の構造オブジェクトを作成し、SQL Expression Languageを使用してそのオブジェクトをSQL文に変換し、ConnectionPoolingを使用してデータベースに接続し、Dialectを使用してSQLを実行し、結果を取得します.
#!/usr/bin/env python
# -*- coding:utf-8 -*-
from sqlalchemy import create_engine, Table, Column, Integer, String, MetaData, ForeignKey
metadata = MetaData()
user = Table('user', metadata,
Column('id', Integer, primary_key=True),
Column('name', String(20)),
)
color = Table('color', metadata,
Column('id', Integer, primary_key=True),
Column('name', String(20)),
)
engine = create_engine("mysql+mysqldb://root:[email protected]:3306/s11", max_overflow=5)
metadata.create_all(engine)
# metadata.clear()
# metadata.remove()
#!/usr/bin/env python
# -*- coding:utf-8 -*-
from sqlalchemy import create_engine, Table, Column, Integer, String, MetaData, ForeignKey
metadata = MetaData()
user = Table('user', metadata,
Column('id', Integer, primary_key=True),
Column('name', String(20)),
)
color = Table('color', metadata,
Column('id', Integer, primary_key=True),
Column('name', String(20)),
)
engine = create_engine("mysql+mysqldb://root:[email protected]:3306/s11", max_overflow=5)
conn = engine.connect()
# SQL ,INSERT INTO "user" (id, name) VALUES (:id, :name)
conn.execute(user.insert(),{'id':7,'name':'seven'})
conn.close()
# sql = user.insert().values(id=123, name='wu')
# conn.execute(sql)
# conn.close()
# sql = user.delete().where(user.c.id > 1)
# sql = user.update().values(fullname=user.c.name)
# sql = user.update().where(user.c.name == 'jack').values(name='ed')
# sql = select([user, ])
# sql = select([user.c.id, ])
# sql = select([user.c.name, color.c.name]).where(user.c.id==color.c.id)
# sql = select([user.c.name]).order_by(user.c.name)
# sql = select([user]).group_by(user.c.name)
# result = conn.execute(sql)
# print result.fetchall()
# conn.close()
詳細は、次のとおりです.
http://www.jianshu.com/p/e6bba189fcbd
http://docs.sqlalchemy.org/en/latest/core/expression_api.html
注意:SQLAlchemyはテーブル構造を変更できません.必要に応じてSQLAlchemy開発者がオープンソースの別のソフトウェアAlembicを使用して完了できます.