flaskノート:flaskとデータベースのインタラクション


公式にはflask-sqlalchemyの使用をお勧めしますが、ここでは個人的にはお勧めしません.一般的にバックグラウンド・プログラマーは、元のsql言語を使用してデータベースの問題を処理するのが好きです.さらに重要なのは、プロジェクトがオンラインになった後、いくつかの運用次元の問題を処理するときに、sql文を表示すれば、より早く問題を見つけることができるからです.次にflask-sqlalchemyはsqlalchemyに基づいてカプセル化されており、コンパイルの観点から効率が低いに違いない(効率の影響はわずかかもしれない).
以上の理由から,sqlalchemyを用いた開発を推奨する.
次の2つの方法はflaskに限らず、pythonのデータベース操作の具体的な実装である.
1つ目の方法(クエリーの場合):
from sqlalchemy import create_engine,text
#       
hostname = '127.0.0.1'
port = '3306'
database = 'dbname'
username = 'root'
pwd = 'pwd'
dburl = 'mysql+mysqldb://{}:{}@{}:{}/{}'.format(username,pwd,hostname,port,database)
#         
engine = create_engine(dburl,echo=True)
with engine.connect() as con:
  rs = con.execute('SELECT 1')  # con.execute(text("select 1 "))
  for row in rs:
    print row

2つ目の方法(追加削除に対して、トランザクションがあります):
from sqlalchemy import create_engine,text
from sqlalchemy.orm import sessionmaker
#       
hostname = '127.0.0.1'
port = '3306'
database = 'dbname'
username = 'root'
pwd = 'pwd'
dburl = 'mysql+mysqldb://{}:{}@{}:{}/{}'.format(username,pwd,hostname,port,database)
#         
engine = create_engine(dburl,echo=True)
Session = sessionmaker(bind=engine)
session = Session()
session.execute("insert test values ('abc','123')")
session.commit()
session.close()