Flask-SQLAlchemy 基本
SQLAlchemyの基本
- ORM: Object Relational Mapper
- DMP: Data Mapper Pattern; classes mapped to a database
Quick Start
で事たりる
- hello_sqlalchemy_mysql.py
from flask import Flask from flask.ext.sqlalchemy import SQLAlchemy app = Flask(__name__) #app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:////tmp/test.db' username="" password="" host="" port="" dbname="" app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://username:password@server/db' db = SQLAlchemy(app) class User(db.Model): id = db.Column(db.Integer, primary_key=True) username = db.Column(db.String(80), unique=True) email = db.Column(db.String(120), unique=True) def __init__(self, username, email): self.username = username self.email = email def __repr__(self): return '<User %r>' % self.username
- ipython
from hello_sqlalchemy_mysql import db from hello_sqlalchemy_mysql import User db.create_all() admin = User('admin', 'admin@example.com') guest = User('guest', 'guest@example.com') db.session.add(admin) db.session.add(guest) db.session.commit() users = User.query.all() admin = User.query.filter_by(username='admin').first()
MYSQLを使う
app.config['SQLALCHEMY_DATABASE_URI'] = "mysql://%s:%s@%s:%s/%s" % (user, password, host, port, dbname)
Transaction
http://stackoverflow.com/questions/10063328/how-use-transaction-in-sql-alchemy-while-using-db-session
http://docs.sqlalchemy.org/en/improve_toc/orm/session_transaction.html
with session.begin():
...
Raw SQL
result = self.db.engine.execute("select * from job_status;")
URLs
- http://www.sqlalchemy.org/
- http://www.sqlalchemy.org/features.html
- https://flask-login.readthedocs.org/en/latest/
- https://pythonhosted.org/Flask-SQLAlchemy/
- http://blog.miguelgrinberg.com/post/the-flask-mega-tutorial-part-iv-database
- http://docs.sqlalchemy.org/en/latest/core/connections.html#sqlalchemy.engine.ResultProxy
- https://pythonhosted.org/Flask-SQLAlchemy/models.html