【星海出品】flask 数据库问题

flask 和数据库的问题

bash 复制代码
pip install pymysql
pip install flask-sqlalchemy

1.Flask连接Mysql

新建flask项目,在app.py中编写

导入模块SQLAlchemy

创建SQLAlchemy实例对象,命名为db,将flask的实例对象app作为参数传给SQLAlchemy,将db和app联系起来,可以调用其相关功能

python 复制代码
from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy(app)

配置数据库相关参数

bash 复制代码
# MySQL所在主机名,默认127.0.0.1
HOSTNAME = "127.0.0.1"
# MySQL监听的端口号,默认3306
PORT = 3306
# 连接MySQL的用户名,自己设置
USERNAME = "root"
# 连接MySQL的密码,自己设置
PASSWORD = "root"
# MySQL上创建的数据库名称
DATABASE = "database_learn"
# 通过修改以下代码来操作不同的SQL比写原生SQL简单很多 --》通过ORM可以实现从底层更改使用的SQL
app.config['SQLALCHEMY_DATABASE_URI'] = f"mysql+pymysql://{USERNAME}:{PASSWORD}@{HOSTNAME}:{PORT}/{DATABASE}?charset=utf8mb4"

使用数据库工具创建数据库并测试连接

python 复制代码
with app.app_context():
    with db.engine.connect() as conn:
        result = conn.execute("select 1")
        print(result.fetchone())
python 复制代码
from flask import Flask
import pymysql

app = Flask(__name__)

# 配置数据库连接信息
app.config['MYSQL_HOST'] = 'localhost'
app.config['MYSQL_USER'] = 'username'
app.config['MYSQL_PASSWORD'] = 'password'
app.config['MYSQL_DB'] = 'database_name'

# 创建数据库连接
db = pymysql.connect(
    host=app.config['MYSQL_HOST'],
    user=app.config['MYSQL_USER'],
    password=app.config['MYSQL_PASSWORD'],
    db=app.config['MYSQL_DB']
)

# 创建数据库游标
cursor = db.cursor()

@app.route('/')
def index():
    # 执行查询语句
    cursor.execute("SELECT * FROM users")
    result = cursor.fetchall()
    
    # 处理查询结果
    users = []
    for row in result:
        user = {
            'id': row[0],
            'name': row[1],
            'email': row[2]
        }
        users.append(user)
    
    # 返回结果
    return str(users)

if __name__ == '__main__':
    app.run()

插入语句

bash 复制代码
@app.route('/create_user')
def create_user():
    name = 'John'
    email = 'john@example.com'
    
    # 执行插入语句
    cursor.execute("INSERT INTO users (name, email) VALUES (%s, %s)", (name, email))
    
    # 提交事务
    db.commit()
    
    return 'User created successfully'

更新数据

python 复制代码
@app.route('/update_user')
def update_user():
    id = 1
    email = 'jane@example.com'
    
    # 执行更新语句
    cursor.execute("UPDATE users SET email = %s WHERE id = %s", (email, id))
    
    # 提交事务
    db.commit()
    
    return 'User updated successfully'

删除数据

python 复制代码
@app.route('/delete_user')
def delete_user():
    id = 1
    
    # 执行删除语句
    cursor.execute("DELETE FROM users WHERE id = %s", (id,))
    
    # 提交事务
    db.commit()
    
    return 'User deleted successfully'

在上述示例代码中,我们使用了不同的SQL语句来执行插入、更新和删除操作。在执行这些操作后,我们需要调用db.commit()方法来提交事务,以确保数据的一致性。

相关推荐
肖永威9 分钟前
macOS环境安装/卸载python实践笔记
笔记·python·macos
TechWJ25 分钟前
PyPTO编程范式深度解读:让NPU开发像写Python一样简单
开发语言·python·cann·pypto
数据知道31 分钟前
PostgreSQL 故障排查:如何找出数据库中最耗时的 SQL 语句
数据库·sql·postgresql
qq_124987075331 分钟前
基于SSM的动物保护系统的设计与实现(源码+论文+部署+安装)
java·数据库·spring boot·毕业设计·ssm·计算机毕业设计
枷锁—sha32 分钟前
【SRC】SQL注入WAF 绕过应对策略(二)
网络·数据库·python·sql·安全·网络安全
Coder_Boy_37 分钟前
基于SpringAI的在线考试系统-考试系统开发流程案例
java·数据库·人工智能·spring boot·后端
Gain_chance43 分钟前
35-学习笔记尚硅谷数仓搭建-DWS层最近n日汇总表及历史至今汇总表建表语句
数据库·数据仓库·hive·笔记·学习
abluckyboy1 小时前
Java 实现求 n 的 n^n 次方的最后一位数字
java·python·算法
喵手1 小时前
Python爬虫实战:构建各地统计局数据发布板块的自动化索引爬虫(附CSV导出 + SQLite持久化存储)!
爬虫·python·爬虫实战·零基础python爬虫教学·采集数据csv导出·采集各地统计局数据发布数据·统计局数据采集
此生只爱蛋1 小时前
【Redis】主从复制
数据库·redis