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 运行迁移脚本同步到数据库中

# 如果字段发生变化,只需要执行后面两个步骤就可以了
相关推荐
拉不动的猪19 分钟前
函数组件和异步组件
前端·javascript·面试
渡我白衣25 分钟前
C++ 同名全局变量:当符号在链接器中“相遇”
开发语言·c++·人工智能·深度学习·microsoft·语言模型·人机交互
淮北49431 分钟前
html + css +js
开发语言·前端·javascript·css·html
麦麦大数据32 分钟前
F036 vue+flask中医热性药知识图谱可视化系统vue+flask+echarts+mysql
vue.js·python·mysql·flask·可视化·中医中药
移远通信44 分钟前
MQTT协议:物联网时代的通信革命
python·物联网·网络协议
Amo Xiang1 小时前
JavaScript逆向与爬虫实战——基础篇(css反爬之动态字体实现原理及绕过)
爬虫·python·js逆向·动态字体
源码_V_saaskw1 小时前
JAVA国际版二手交易系统手机回收好物回收发布闲置商品系统源码支持APP+H5
java·开发语言·微信·智能手机·微信小程序·小程序
编程让世界美好1 小时前
选手评分问题(python)
python
java1234_小锋1 小时前
PyTorch2 Python深度学习 - PyTorch2安装与环境配置
开发语言·python·深度学习·pytorch2