學(xué)習(xí)開始的前提是本地已經(jīng)安裝mysql并創(chuàng)建了一個名為
flask_data
的數(shù)據(jù)庫
一贼陶、安裝三方庫
pip install flask-sqlalchemy
pip install pymysql
二、創(chuàng)建數(shù)據(jù)庫表
from flask import Flask, request, abort
# 導(dǎo)入相關(guān)庫
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
# 創(chuàng)建數(shù)據(jù)庫的實例對象
db = SQLAlchemy(app) # 第一種實例化方式
"""# 第二種實例化方式
db = SQLAlchemy()
db.app = app
db.init_app(app)
"""
# 配置數(shù)據(jù)庫
host_name = '127.0.0.1'
port = 3306
user_name = 'root'
password = '123456'
database = 'flask_data'
app.config['SQLALCHEMY_DATABASE_URI'] = fr'mysql+pymysql://{user_name}:{password}@{host_name}:{port}/{database}?charset=utf8mb4'
# 創(chuàng)建數(shù)據(jù)庫模型
class User(db.Model):
__tablename__ = 'users'
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(20), unique=True)
email = db.Column(db.String(30), unique=True)
# 創(chuàng)建表烘贴, 這里有一個特別注意的地方:初始化數(shù)據(jù)庫表之后撮胧,如果后面修改了數(shù)據(jù)庫模型芹啥,這里是不會被刪除和添加的, django的數(shù)據(jù)庫模塊是可以的
db.create_all()
# 可以使用下述代碼測試連接是否成功, 如果連接成功汽纠,會輸出(1,)
with app.app_context():
with db.engine.connect() as conn:
rs = conn.execute('select 1')
print(rs.fetchone())
@app.route('/')
def root():
return hello
if __name__ == '__main__':
app.run(debug=True)
這里有一個需要特別注意的虱朵,注釋里也提到了:創(chuàng)建表之后钓账,如果后期修改了數(shù)據(jù)庫模型梆暮,則已創(chuàng)建數(shù)據(jù)庫表不會跟著一起變更,之前學(xué)習(xí)過django
是支持的
然后使用下述命令查看表是否創(chuàng)建成功
# 連接數(shù)據(jù)庫蚯涮,回車后需要輸入密碼再回車一下才能連接成功
mysql -uroot -p
# 查看有當(dāng)前有哪些數(shù)據(jù)庫
show databases;
# 使用自己創(chuàng)建的那個數(shù)據(jù)庫遭顶,我創(chuàng)建的數(shù)據(jù)庫名為flask_data
use flask_data;
# 查看當(dāng)前選擇的數(shù)據(jù)庫下有哪些表
show tables;
# 查看users表的字段有哪些
show columns from users;
結(jié)果如下:
當(dāng)然棒旗,也可以使用可視化的數(shù)據(jù)庫工具查看表是否創(chuàng)建成功撩荣,這里不進行敘述