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

# 如果字段发生变化,只需要执行后面两个步骤就可以了
相关推荐
carcarrot7 分钟前
一些前端组件介绍
前端·javascript
陌上笙清净8 分钟前
flask内存马的真谛!!!
后端·python·网络安全·flask
A Genius18 分钟前
Pytorch实现MobilenetV2官方源码
人工智能·pytorch·python
疯狂的沙粒18 分钟前
JavaScript 单例模式的创建与应用
开发语言·前端·javascript·vue.js
余额不足1213821 分钟前
C语言基础六:循环结构及面试上机题
c语言·开发语言
m0_748256561 小时前
Rust环境安装配置
开发语言·后端·rust
程序猿阿伟1 小时前
《C++巧铸随机森林:开启智能决策新境界》
开发语言·c++·随机森林
陈大爷(有低保)1 小时前
LayUI结合SSM框架
前端·javascript·layui
niew~1 小时前
用uni-app写的开灯、关灯的面板界面
前端·javascript·uni-app
假意诗人1 小时前
【NextJS】Arco Design与Next.js快速上手
开发语言·javascript·arco design