python flask sqlalchemy連接數(shù)據(jù)庫(kù)流程介紹
1、安裝flask_sqlalchemy和pymysql包
pip install flask-sqlalchemy
pip install pymysql
2、進(jìn)行配置
使用Flask-SQLAlchemy擴(kuò)展操作數(shù)據(jù)庫(kù),首先需要通過(guò)URL建立數(shù)據(jù)庫(kù)連接,必須保存到Flask配置對(duì)象的SQLALCHEMY_DATABASE_URI中。
HOSTNAME = '127.0.0.1'
PORT = '3306'
DATABASE = 'flask_test'
USERNAME = 'root'
PASSWORD = 'root'
DB_URI = 'mysql+pymysql://{}:{}@{}:{}/{}?charset=utf8'.format(USERNAME,PASSWORD,HOSTNAME,PORT,DATABASE)
app.config['SQLALCHEMY_DATABASE_URI'] = DB_URI
其中HOSTNAME為路由地址
PORT為端口號(hào),我在創(chuàng)建數(shù)據(jù)庫(kù)時(shí)沒(méi)有更改,所以用的默認(rèn)的3306端口號(hào)
DATABASE為數(shù)據(jù)庫(kù)名字
后面兩個(gè)參數(shù)為數(shù)據(jù)庫(kù)用戶名和密碼
3、創(chuàng)建SQLALchemy實(shí)例
db = SQLAlchemy(app)
我這里創(chuàng)建的實(shí)例記為db
4、創(chuàng)建ORM類
創(chuàng)建這個(gè)類必須繼承db.Model !!!
class Article(db.Model): __tablename__ = "article" id = db.Column(db.Integer, primary_key=True, autoincrement=True) title = db.Column(db.String(200), nullable=False) content = db.Column(db.Text, nullable=False)
第二行設(shè)置數(shù)據(jù)庫(kù)表名為article。第三行設(shè)置id項(xiàng),將其設(shè)置為整數(shù)項(xiàng),并且設(shè)置為主鍵以及自動(dòng)增長(zhǎng)。第四行設(shè)置title項(xiàng),將其設(shè)置為含200個(gè)字符的字符串,并設(shè)置不能非空。第五行設(shè)置content項(xiàng),將其設(shè)置為db.Text格式并且設(shè)置不能非空。
5、創(chuàng)建表
db.create_all()
然后就會(huì)發(fā)現(xiàn),數(shù)據(jù)庫(kù)中多出一張表:
當(dāng)然,這張表目前還是空的
6、在表中增刪查改數(shù)據(jù)
我們可以在一個(gè)視圖函數(shù)中執(zhí)行這些操作,當(dāng)然也可以直接執(zhí)行
@app.route("/article") def article_view(): # 添加數(shù)據(jù) article = Article(title="鋼鐵是怎樣煉成的", content="xxx") db.session.add(article) db.session.commit() # # 查詢數(shù)據(jù) # article = Article.query.filter_by(id=1)[0] # print(article.title) # # # 修改數(shù)據(jù) # article = Article.query.filter_by(id=1)[0] # article.content = "yyy" # db.session.commit() # # # 刪除數(shù)據(jù) # article = Article.query.filter_by(id=1)[0] # db.session.delete(article) # db.session.commit() return "數(shù)據(jù)操作成功"
添加數(shù)據(jù)時(shí)沒(méi)加id,是因?yàn)槲覀冎霸O(shè)置id的autoincrement為True,于是它會(huì)自動(dòng)增加。
執(zhí)行完發(fā)現(xiàn)數(shù)據(jù)庫(kù)中多出了如下:
其他三步結(jié)果請(qǐng)自行查看。當(dāng)然,如果想觀察每一步的結(jié)果,在執(zhí)行添加數(shù)據(jù)前最好最好先將其他三步加上注釋,對(duì)于其他三步也是一樣。
到此這篇關(guān)于python flask sqlalchemy連接數(shù)據(jù)庫(kù)流程介紹的文章就介紹到這了,更多相關(guān)python連接數(shù)據(jù)庫(kù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Python?ORM框架之SQLAlchemy?的基礎(chǔ)用法
- Python?flask?sqlalchemy的簡(jiǎn)單使用及常用操作
- python sqlalchemy動(dòng)態(tài)修改tablename兩種實(shí)現(xiàn)方式
- Python+SQLAlchemy輕松實(shí)現(xiàn)管理數(shù)據(jù)庫(kù)
- Python SQLAlchemy簡(jiǎn)介及基本用法
- 3個(gè)Python?SQLAlchemy數(shù)據(jù)庫(kù)操作功能詳解
- Python使用SQLAlchemy模塊實(shí)現(xiàn)操作數(shù)據(jù)庫(kù)
- Python?SQLAlchemy與數(shù)據(jù)庫(kù)交互操作完整指南
- Python?SQLAlchemy庫(kù)的實(shí)現(xiàn)示例
相關(guān)文章
python中列表對(duì)象pop()方法的使用說(shuō)明
這篇文章主要介紹了python中列表對(duì)象pop()方法的使用說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-05-05python中把嵌套的列表合并成一個(gè)列表方法總結(jié)
python中l(wèi)ist這種數(shù)據(jù)結(jié)構(gòu)很常用到,下面這篇文章主要給大家介紹了關(guān)于python中把嵌套的列表合并成一個(gè)列表方法的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-11-11Python?socket之TCP通信及下載文件的實(shí)現(xiàn)
本文主要介紹了Python?socket之TCP通信及下載文件的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-02-02python?中?關(guān)于reverse()?和?reversed()的用法詳解
這篇文章主要介紹了python?中?關(guān)于reverse()?和?reversed()的用法介紹,本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-01-01解決Python下json.loads()中文字符出錯(cuò)的問(wèn)題
今天小編就為大家分享一篇解決Python下json.loads()中文字符出錯(cuò)的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-12-12Python安裝selenium包詳細(xì)過(guò)程
在本篇文章里小編給大家整理了關(guān)于Python安裝selenium包詳細(xì)過(guò)程,需要的朋友們可以學(xué)習(xí)下。2019-07-07python數(shù)據(jù)可視化Seaborn繪制山脊圖
這篇文章主要介紹了利用python數(shù)據(jù)可視化Seaborn繪制山脊圖,山脊圖一般由垂直堆疊的折線圖組成,這些折線圖中的折線區(qū)域間彼此重疊,此外它們還共享相同的x軸.下面來(lái)看看具體的繪制過(guò)程吧,需要的小伙伴可以參考一下2022-01-01