SQLAlchemy是Python編程語言下的一款ORM框架,該框架創建在數據庫API之上,使用關係對象映射進行數據庫操做,簡言之即是:將對象轉換成SQL,而後使用數據API執行SQL並獲取執行結果mysql
安裝flask-sqlalchemysql
pip install flask-sqlalchemy
安裝數據庫驅動數據庫
pip3 install PyMySQL
1、初始化和設置數據庫信息編程
①、flask 入口文件,test_flask.pyflask
from flask import Flask from flask_sqlalchemy import SQLAlchemy #導入sqlalchemy,按住ctrl 點擊 flask_sqlalchemy 可查看源碼 import config #導入下面的config.py,添加配置信息
#初始化sqlalchemy app = Flask(__name__) app.config.from_object(config) #添加congfig的配置 db = SQLAlchemy(app) #初始化對象,建立映射 db.create_all() #驗證數據庫鏈接信息是否正確,啓動程序沒有報錯,則表示正確而 @app.route('/') def hello_world(): return 'Hello World!' if __name__ == '__main__': app.run(host='192.168.132.130',debug=True)
②、config.pysession
#dialect+driver://<username>:<password>@<host>:<port>/<dbname>[?<options>] DIALECT = 'mysql' DRIVER = 'pymysql' USERNAME = 'root' PASSWORD = 'root' HOST = '127.0.0.1' PORT = '3306' DATABASE = 'flask_test'
#固定名稱 SQLALCHEMY_DATABASE_URI = "{}+{}://{}:{}@{}:{}/{}?charset=utf8".format(DIALECT,DRIVER,USERNAME,PASSWORD,HOST,PORT,DATABASE) SQLALCHEMY_TRACK_MODIFICATIONS = False
2、使用SQLAlchemy 建立模型與表的映射app
from flask import Flask from flask_sqlalchemy import SQLAlchemy import config
#初始化配置 app = Flask(__name__) app.config.from_object(config) db = SQLAlchemy(app) #傳統建立表的方法 # create ta_article( # id int primary_key_autoincrement, # title varchar(100) not null, # content text not null # ) #使用slqalchemy建立表的方法 class Article(db.Model): __tablename__ = 'article' #指定表名
# 字段必須爲db.Cloumn()的數據類型,兩個True表示爲主鍵和自增 id = db.Column(db.Integer,primary_key=True,autoincrement=True) title = db.Column(db.String(100),nullable=False) #指定字符串長度爲100,nullable表示能夠爲空,Fasle表示不能爲空
content = db.Column(db.Text,nullable=False) #將表名映射到數據庫,啓動服務就會建立這個表 db.create_all() @app.route('/') def hello_world(): return 'Hello World!' if __name__ == '__main__': app.run(host='192.168.132.130',debug=True)
3、SQLAlchemy增刪改查框架
from flask import Flask,session from flask_sqlalchemy import SQLAlchemy import config app = Flask(__name__) app.config.from_object(config) db = SQLAlchemy(app) class Article(db.Model): __tablename__ = 'article' id = db.Column(db.Integer,primary_key=True,autoincrement=True) title = db.Column(db.String(100),nullable=False) content = db.Column(db.Text,nullable=False) db.create_all() @app.route('/') def hello_world(): #添加數據 articel1 = Article(title='aa',content='bb') #id 爲自增字段,這裏不用填寫 db.session.add(articel1) #flask-SQLAlchemy 的數據操做由session操做,這裏表示提交到session中,並無提交到數據庫
#事物操做須要提交,寫入到數據庫 db.session.commit() #查詢操做 傳統查詢操做
select * from xxx where xx = xx; result = Article.query.filter(Article.title =='aa').first() #表示取第一條數據,若是去掉first()查詢到的數據爲對象 print (result[0].title,result[0].content) #默認的查詢結果(result)爲對象,result[0]結果爲一個元組 #修改操做 ,先查詢,在修改,在提交 result = Article.query.filter(Article.title =='aa').first() result.title = 'aaaa' db.session.commit() #刪除操做,查詢,刪除,提交 result = Article.query.filter(Article.title == 'aa').first() db.session.delete(result) db.session.commit() return 'Hello World!' if __name__ == '__main__': app.run(host='192.168.132.130',debug=True)