Python_Flask02

所有人都不许学Java了,都来学Python!

如果不来学的话请网爆我的老师

连接前的准备

安装pymysql 和 flask_sqlalchemy,安装第三下面两个所需要的包才能连接上数据库

python 复制代码
pip install pymysql 

pip install flask_sqlalchemy  

pymysql是一个Python模块,它可以用作一个独立的Python文件或作为Python程序中的一个模块。安装pymysql之后,需要导入它并连接到一个MySQL数据库,以开始与之交互。

sqlalchemy是一个Python库和一个ORM(对象关系映射器)。通过SQLAlchemy,可以将Python对象映射到MySQL数据库表中。这种方法可以使MySQL与Python代码的交互更直观和更简单。

链接数据库

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,)代表链接成功了!

python 复制代码
with app.app_context():
    with db.engine.connect() as conn:
        # 使用 text() 函数将字符串转换为可执行对象
        rs = conn.execute(text("SELECT 1"))
        print(rs.fetchone())
        #日志中出现 (1,) 代表数据库连接成功

创建数据库表

上面都是有注释的,执行的话就可以,直接生成数据库表,这个执行之前,数据库得有这个库。

有这个库就行,千万得提前创建好奥,不然会报错哒~~~~~~~~~~~~

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)

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中增加一个字段,这种方法是有弊端的。有一种新的方式。

python 复制代码
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

上面第一种方式链接数据库是很简单的,不需要这种方式。接下来会有个特殊的方式。

只看注释,完整的代码和使用方式在末尾查看。

python 复制代码
# 这个如果上面的模型新增了一个字段的话这个表是不会发生变化的,数据库表是不会发生变化,但是新增的模型会添加到数据库中
# 上面的了解即可
# 需要了解和掌握下面的方式
# pip install flask-migrate
# migrate = Migrate(app,db)
# 创建数据库的三个步骤
# 1. flask db init  只需要执行一次
# 2. flask db migrate 识别ORM模型的改变,生成迁移脚本
# 3. flask db upgrade 运行迁移脚本同步到数据库中

# 如果字段发生变化,只需要执行后面两个步骤就可以了
相关推荐
장숙혜1 分钟前
JavaScript正则表达式解析:模式、方法与实战案例
开发语言·javascript·正则表达式
安大小万18 分钟前
C++ 学习:深入理解 Linux 系统中的冯诺依曼架构
linux·开发语言·c++
随心Coding22 分钟前
【零基础入门Go语言】错误处理:如何更优雅地处理程序异常和错误
开发语言·后端·golang
T.Ree.27 分钟前
C语言_自定义类型(结构体,枚举,联合)
c语言·开发语言
Channing Lewis28 分钟前
python生成随机字符串
服务器·开发语言·python
资深设备全生命周期管理1 小时前
以Python 做服务器,N Robot 做客户端,小小UI,拿捏
服务器·python·ui
洪小帅1 小时前
Django 的 `Meta` 类和外键的使用
数据库·python·django·sqlite
小熊科研路(同名GZH)1 小时前
【Matlab高端绘图SCI绘图模板】第002期 绘制面积图
开发语言·matlab
夏沫mds1 小时前
web3py+flask+ganache的智能合约教育平台
python·flask·web3·智能合约