### 安裝:
```shell
pip install flask-sqlalchemy
```mysql
### 數據庫鏈接:
1. 跟sqlalchemy同樣,定義好數據庫鏈接字符串DB_URI。
2. 將這個定義好的數據庫鏈接字符串DB_URI,經過`SQLALCHEMY_DATABASE_URI`這個鍵放到`app.config`中。示例代碼:`app.config["SQLALCHEMY_DATABASE_URI"] = DB_URI`.
3. 使用`flask_sqlalchemy.SQLAlchemy`這個類定義一個對象,並將`app`傳入進去。示例代碼:`db = SQLAlchemy(app)`。sql
### 建立ORM模型:
1. 仍是跟使用sqlalchemy同樣,定義模型。如今再也不是須要使用`delarative_base`來建立一個基類。而是使用`db.Model`來做爲基類。
2. 在模型類中,`Column`、`String`、`Integer`以及`relationship`等,都不須要導入了,直接使用`db`下面相應的屬性名就能夠了。
3. 在定義模型的時候,能夠不寫`__tablename__`,那麼`flask_sqlalchemy`會默認使用當前的模型的名字轉換成小寫來做爲表的名字,而且若是這個模型的名字使用了多個單詞而且使用了駝峯命名法,那麼會在多個單詞之間使用下劃線來進行鏈接。**雖然flask_sqlalchemy給咱們提供了這個特性,可是不推薦使用。由於明言勝於暗喻**shell
### 將ORM模型映射到數據庫:
1. db.drop_all()
2. db.create_all()數據庫
### 使用session:
之後session也不須要使用`sessionmaker`來建立了。直接使用`db.session`就能夠了。操做這個session的時候就跟以前的`sqlalchemy`的`session`是iyimoyiyang的。flask
### 查詢數據:
若是查找數據只是查找一個模型上的數據,那麼能夠經過`模型.query`的方式進行查找。`query`就跟以前的sqlalchemy中的query方法是同樣用的。示例代碼以下:session
1 # coding:utf-8 2 3 from flask import Flask 4 from flask_sqlalchemy import SQLAlchemy 5 6 SQLALCHEMY_DATABASE_URI = 'mysql+pymysql://root:123456@127.0.0.1/sqlalchemy_first?charset=utf8' 7 8 app = Flask(__name__) 9 app.config['SQLALCHEMY_DATABASE_URI'] = SQLALCHEMY_DATABASE_URI 10 app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False 11 db = SQLAlchemy(app) 12 13 14 # model 15 class User(db.Model): 16 __tablename__ = 'user' 17 id = db.Column(db.Integer, primary_key=True, autoincrement=True) 18 username = db.Column(db.String(50), nullable=False) 19 20 def __repr__(self): 21 return "User<{}>".format(self.username) 22 23 24 class Article(db.Model): 25 __tablename__ = 'article' 26 id = db.Column(db.Integer, primary_key=True, autoincrement=True) 27 title = db.Column(db.String(50), nullable=False) 28 uid = db.Column(db.Integer, db.ForeignKey('user.id')) 29 author = db.relationship("User", backref='articles') 30 31 def __repr__(self): 32 return "Article<{}>".format(self.title) 33 34 35 @app.route('/') 36 def hello_world(): 37 return 'Hello World!' 38 39 40 if __name__ == '__main__': 41 42 # 添加數據 43 user = User(username='saber') 44 article = Article(title='title1') 45 article.author = user 46 db.session.add(article) 47 db.session.commit() 48 49 # 查詢 50 users = User.query.first() 51 print users 52 53 # 修改 54 user = User.query.filter(User.username=='saber').first() 55 user.username='saber007' 56 db.session.commit() 57 58 # 刪除 59 user = User.query.filter(User.username == 'saber007').first() 60 db.session.delete(user) 61 db.session.commit() 62 app.run()