好久不見,不知道大家有沒有想我呢?(一定想了對吧我曉得hhh)
今天給大家帶來的是如何利用flask框架搭建的web服務器連接後端的數據庫。
準備好了嗎?那我們就開始啦!
【寫在前面】
在開始這一項任務前,你需要具備的條件:
①Flask框架下的web服務器已經搭建完畢
②學習過數據庫相關的知識
③熟悉使用MySQL相關語句
(本次操作使用的是Navicat數據庫管理工具)
最最最重要的是,你有強烈的興趣去學會它!!!
先放代碼,之後我們詳細講解~
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
# 配置數據庫的地址
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://root@localhost:3306/flask_sql'
# 跟蹤數據庫的修改 --> 不建議開啓 未來的版本中會移除
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
#查詢時會顯示原始SQL語句
# app.config['SQLALCHEMY_ECHO'] = True
# 創建數據庫對象
db = SQLAlchemy(app)
# 學生
class Students(db.Model):
# 定義表名
__tablename__ = 'students'
# 定義字段
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(16))
stu_number = db.Column(db.String(32), unique=True)
# repr()方法顯示一個可讀字符串,實例返回的內容
def __repr__(self):
return '<User: %s %s %s %s>' % (self.name, self.id, self.stu_number)
def create_table():
# 刪除表
db.drop_all()
# 創建表
db.create_all()
stu1 = Students(name='小明', stu_number='1918101')
stu2 = Students(name='小紅', stu_number='1918102')
stu3 = Students(name='小華', stu_number='1918103')
db.session.add_all([stu1,stu2,stu3])
db.session.commit()
# 建表函數
create_table()
@app.route('/')
def index():
return 'Hello flask!'
if __name__ == '__main__':
app.run(debug=True)
1.安裝SQLAlchemy第三方庫
from flask_sqlalchemy import SQLAlchemy
相關介紹可看這篇博客:
https://www.jianshu.com/p/20593da77c04
2.配置數據庫地址
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://root@localhost:3306/flask_sql'
‘mysql://用戶名:密碼@主機名/ip地址:端口號/數據庫名’
上述信息可以在Navicat裏查看,如下圖
3.新建數據庫
①方法有兩種:一是利用Navicat圖形化界面構建,右擊localhost選擇新建數據庫。注意:數據庫名與要匹配;由於所存數據有中文字符,數據庫地址字符集和排序規則都要選取utf8,如下圖:
二是利用DDL語句創建數據庫,如下圖:
CREATE database flask_sql charset=utf8;
4.創建數據庫對象及學生類
db = SQLAlchemy(app) # db爲對象名,自擬
class Student(db.Model):
# 定義表名
__tablename__ = 'student'
# 定義字段
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(16), unique=True)
stu_number = db.Column(db.String(32), unique=True)
# repr()方法顯示一個可讀字符串,實例返回的內容
def __repr__(self):
return '<User: %s %s %s %s>' % (self.name, self.id, self.stu_number)
注意點:
①定義數據庫表名: tablename = '表名’
②定義字段: 字段名 = db.Column(類型,完整性約束條件)
常用的SQLAlchemy字段類型
③注意repr()方法與str()方法的區別,可參考這篇博客:
https://blog.csdn.net/qq_39806003/article/details/84589292
5.向數據庫中存儲數據完成建表
def create_table():
# 刪除表
db.drop_all()
# 創建表
db.create_all()
stu1 = Student(name='小明', stu_number=“1918101”)
stu2= Student(name='小紅', stu_number=“1918102”)
stu3= Student(name='song', stu_number=“1918103”)
db.session.add_all([stu1,stu2,stu3])
db.session.commit()
①先刪除後建立表,使每次運行可以更新數據庫中的數據
②由於引入SQLAlchemy庫,使關係數據庫的表結構可以映射到對象上,輸入數據等同於定義並初始化一個個對象
③在Flask-SQLAlchemy中,插入、修改、刪除操作,均由數據庫會話管理。會話用db.session表示。在準備把數據寫入數據庫前,要先將數據添加到會話中然後調用 commit() 方法提交會話。
相關操作如下:
db.session.add(對象) 添加到數據庫的session中
db.session.add_all([對象1, 對象2]) 添加多個信息到session中
db.session.delete(對象) 刪除數據庫(需跟上commit)
db.session.commit() 提交數據庫的修改(包括增/刪/改)
至此,我們就已經實現連接數據庫並向其中寫入數據的操作啦,下面讓我們一起來驗證一下吧!
6.查詢所建數據庫的相關信息
①使用DDL查詢語句查看
select * from students;
②使用Navicat查看錶信息,如下圖:
至此,我們就順利完成本次操作啦,恭喜恭喜!有什麼疑問歡迎下面留言或私信我噢!