Flask 數據庫 SQLAlchemy

Python 版本: 3.7.8python

用 Pycharm 開發工具,新建項目,設置安裝如下包:mysql

1) Flasksql

2) Flask-SQLAchemy數據庫

3) PyMySqlflask

 

###  Flask-SQLAlchemy 的介紹與安裝:session


 

1.  ORM: Object Relationship Mapping (模型關係映射)app

2.  flask-sqlalchemy 是一套 ORM 框架框架

3.  ORM 的優點:簡單方便地操做數據庫,和操做對象相似。一個表抽象成一個類,一條數據抽象成該類的一個對象。工具

4.  安裝 flask-sqlalchemy開發工具

 

### Flask-SQLAlchemy 的使用:


 

1.  初始化和設置數據庫配置信息:

  * 使用 flask_sqlalchemy 中的 SQLAlchemy 進行初始化:

1 from flask_sqlalchemy import SQLAlchemy
2 import config
3 
4 app = Flask(__name__)
5 app.config.from_object(config)
6 db = SQLAlchemy(app)

2.  設置配置信息,在 'config.py' 文件中添加如下:

 1 # dialect+driver://username:password@host:port/database
 2 DIALECT = 'mysql'
 3 DRIVER = 'pymysql'  # 驅動程序在 python2 中是 mysqldb 
 4 USERNAME = 'pydev'
 5 PASSWORD = 'syjinsari'
 6 HOST = '192.168.0.110'
 7 PORT = '3306'
 8 DATABASE = 'py_demo'
 9 
10 SQLALCHEMY_DATABASE_URL = '{}+{}://{}:{}@{}:{}/{}?charset=utf8'.format(DIALECT,DRIVER,USERNAME,PASSWORD,HOST,PORT,DATABASE)
11 
12 SQLALCHEMY_TRACK_MODIFICATIONS = False

3.  在主 app 文件中添加配置文件:

1 app = Flask(__name__)
2 app.config.from_object(config)
3 db = SQLAlchemy(app)

4.  測試鏈接,成功或者報錯:

'''
db.create_all()
'''

 

###  使用 Flask-SQLAlchemy 建立模型與表的映射:


 

1.  模型須要繼承自 `db.Model` ,而後映射到表中的屬性,必須寫成 `db.Column`的數據類型。

2.  數據類型:db.Integer  db.String  db.Text

   其餘參數:  primary_key  autoincrement  nullable

3.  最後調用  `db.create_all() 將模型真正建立到數據庫中

 

### 數據增刪改查


 

 

 1 # 增:
 2 article1 = Article(title='1st aaa',content='this is aaa')
 3 db.session.add(article1)
 4 # 事務
 5 db.session.commit()
 6 
 7 #
 8 # select * from article where article.title = '1st aaa'
 9 article1 = Article.query.filter(Article.title == '1st aaa').first()
10 print('title: %s' % article1.title)
11 print('content: %s' % article1.content)
12 
13 #
14 # 1. 查到須要更改的行  2. 更改數據 3. 提交事務
15 article1 = Article.query.filter(Article.title == '1st aaa').first()
16 article1.title = 'new aaa'
17 db.session.commit()
18 
19 
20 #
21 # 1. 查到須要刪除的行   2. 刪除   3. 提交事務
22 article1 = Article.query.filter(Article.title == 'new aaa').first()
23 db.session.delete(article1)
24 db.session.commit()
相關文章
相關標籤/搜索