Web服務器(Flask框架)連接MySQL數據庫並寫入數據詳細教程

好久不見,不知道大家有沒有想我呢?(一定想了對吧我曉得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裏查看,如下圖
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字段類型
常用的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查看錶信息,如下圖:
查看錶
至此,我們就順利完成本次操作啦,恭喜恭喜!有什麼疑問歡迎下面留言或私信我噢!

最後祝大家生活愉快,bug都會改!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章