所有人都不许学Java了,都来学Python!
如果不来学的话请网爆我的老师
连接前的准备
安装pymysql 和 flask_sqlalchemy,安装第三下面两个所需要的包才能连接上数据库
pip install pymysql
pip install flask_sqlalchemy
pymysql是一个Python模块,它可以用作一个独立的Python文件或作为Python程序中的一个模块。安装pymysql之后,需要导入它并连接到一个MySQL数据库,以开始与之交互。
sqlalchemy是一个Python库和一个ORM(对象关系映射器)。通过SQLAlchemy,可以将Python对象映射到MySQL数据库表中。这种方法可以使MySQL与Python代码的交互更直观和更简单。
链接数据库
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
# 本地基础信息的主机名
HOSTNAME = "127.0.0.1"
# mysql端口号
PORT = "3306"
# 账号
USERNAME = "root"
# 密码
PASSWORD = "admin123"
# 数据库名
DATABASE = "flasklearn"
# 将相关的配置挂载app.config中
app.config[
'SQLALCHEMY_DATABASE_URI'] = f"mysql+pymysql://{USERNAME}:{PASSWORD}@{HOSTNAME}:{PORT}/{DATABASE}?charset=utf8"
# SQLAlchemy会加载app中的配置
db = SQLAlchemy(app)
@app.route('/')
def hello_world():
return 'Hello World!'
if __name__ == '__main__':
app.run()
测试是否连接成功
在db的位置的下面放上这段代码,如果出现(1,)代表链接成功了!
with app.app_context():
with db.engine.connect() as conn:
# 使用 text() 函数将字符串转换为可执行对象
rs = conn.execute(text("SELECT 1"))
print(rs.fetchone())
#日志中出现 (1,) 代表数据库连接成功
创建数据库表
上面都是有注释的,执行的话就可以,直接生成数据库表,这个执行之前,数据库得有这个库。
有这个库就行,千万得提前创建好奥,不然会报错哒~~~~~~~~~~~~
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
# 本地基础信息的主机名
HOSTNAME = "127.0.0.1"
# mysql端口号
PORT = "3306"
# 账号
USERNAME = "root"
# 密码
PASSWORD = "admin123"
# 数据库名
DATABASE = "flasklearn"
# 将相关的配置挂载app.config中
app.config[
'SQLALCHEMY_DATABASE_URI'] = f"mysql+pymysql://{USERNAME}:{PASSWORD}@{HOSTNAME}:{PORT}/{DATABASE}?charset=utf8"
# SQLAlchemy会加载app中的配置
db = SQLAlchemy(app)
class User(db.Model):
__tablename__ = 'user'
id = db.Column(db.Integer, primary_key=True, autoincrement=True)
username = db.Column(db.String(100), nullable=False)
password = db.Column(db.String(100), nullable=False)
# 执行所有的模型,来创建数据库
with app.app_context():
db.create_all()
@app.route('/')
def hello_world():
return 'Hello World!'
if __name__ == '__main__':
app.run()
主要的是,这段代码是创建一个User模型,然后执行db。create_all()会执行这个上面创建的模型然后映射在数据库中,但是如果后期你想在user中增加一个字段,这种方法是有弊端的。有一种新的方式。
class User(db.Model):
__tablename__ = 'user'
id = db.Column(db.Integer, primary_key=True, autoincrement=True)
username = db.Column(db.String(100), nullable=False)
password = db.Column(db.String(100), nullable=False)
# 执行所有的模型,来创建数据库
with app.app_context():
db.create_all()
flask_migrate
上面第一种方式链接数据库是很简单的,不需要这种方式。接下来会有个特殊的方式。
只看注释,完整的代码和使用方式在末尾查看。
# 这个如果上面的模型新增了一个字段的话这个表是不会发生变化的,数据库表是不会发生变化,但是新增的模型会添加到数据库中
# 上面的了解即可
# 需要了解和掌握下面的方式
# pip install flask-migrate
# migrate = Migrate(app,db)
# 创建数据库的三个步骤
# 1. flask db init 只需要执行一次
# 2. flask db migrate 识别ORM模型的改变,生成迁移脚本
# 3. flask db upgrade 运行迁移脚本同步到数据库中
# 如果字段发生变化,只需要执行后面两个步骤就可以了