使用python-flask链接数据库设计网页增删改查

Python Flask 实战:数据库操作与网页CRUD
本文介绍了如何使用Python的Flask框架连接数据库并实现网页上的增删改查功能。首先通过sqlyog创建数据库,然后在PyCharm中搭建Flask项目,安装pymysql和sqlalchemy库。接着讲解了数据库模型的设计,包括各种字段类型的使用,如Integer、String和DateTime等。最后探讨了如何进行数据的添加、删除和查询操作。

一、使用sqlyog创建数据库

  1. 创建数据库
CREATE DATABASE animalDB;
use animalDB;
CREATE TABLE category (
	cid INTEGER NOT NULL AUTO_INCREMENT, 
	`cName` VARCHAR(255) NOT NULL, 
	PRIMARY KEY (cid)
);
CREATE TABLE animals (
	aid INTEGER NOT NULL AUTO_INCREMENT, 
	aname VARCHAR(255) NOT NULL, 
	asex VARCHAR(2) NOT NULL, 
	atime DATETIME, 
	habitat VARCHAR(255), 
	cid INTEGER NOT NULL, 
	PRIMARY KEY (aid), 
	FOREIGN KEY(cid) REFERENCES category (cid)
);
INSERT INTO `category`(`cName`)
VALUES ('鸟类'),('熊类'),('两栖类');
INSERT INTO `animals`(`aname`,`asex`,`atime`,`habitat`,`cid`)
VALUES ('乐乐','雄','2022-01-01 12:12:12','岛屿',1),
('壮壮','雌','2023-02-02 11:11:11','挪威森林',2),
('哥斯拉','雄','2023-05-05 10:12:12','未知领域',3),
('丑丑','雄','2023-05-05 10:12:12','中国森林',1);
SELECT * FROM `category`
SELECT * FROM `animals`

二、在pycharm创建项目

  1. 创建flask项目
  2. 打开终端安装第三方模块: pymysql和sqlalchemy模块
    # 安装pymysql模块
    pip
<think>好的,我现在需要帮助用户了解如何使用Python作为后端连接数据库并进行增删改查操作。首先,我需要整理已有的引用资料,看看有哪些相关的信息可以利用。 根据用户提供的引用,有几个相关的资源。引用[1]、[2]、[4]、[5]都提到了Python连接数据库的操作,特别是使用pymysql和Django框架的例子。引用[3]是关于Java的,可能暂时不需要。所以主要参考Python相关的引用。 用户的问题是关于Python后端连接数据库进行增删改查的教程,所以需要分步骤说明。可能需要先介绍连接数据库的基本步骤,然后分别讲解增删改查的实现,并提供代码示例。 首先,连接数据库通常需要几个步骤:安装驱动、建立连接、创建游标、执行SQL、提交事务、关闭连接。例如,引用[1]中展示了使用pymysql.connect来连接MySQL数据库,然后创建游标执行查询。引用[2]提到Flask连接MySQL,但用户可能更关注基础操作,所以先以pymysql为例。 接下来,增删改查的具体操作。增加数据使用INSERT语句,删除用DELETE,修改用UPDATE,查询用SELECT。在代码中需要注意防止SQL注入,所以应该使用参数化查询,如引用[1]中的execute方法传入参数。 需要确保代码示例的正确性,比如引用[5]中的代码可能有问题,比如函数名和参数是否正确,比如addUser的参数是否匹配表中的列。需要检查并调整示例代码,确保用户能直接运行。 另外,引用[4]提到了Django框架中的数据库操作,使用ORM方式,比如PaasInfo.objects.create,这可能和直接使用pymysql不同。用户的问题可能更偏向于直接使用库连接,而不是框架,但或许可以简要提及两种方式。 还需要注意事务处理,比如在执行插入、更新、删除后需要commit,否则修改不会保存到数据库,如引用[1]中的db.commit()。同时,异常处理也很重要,需要使用try...except来捕获错误,并回滚事务。 在代码示例中,可能需要先创建数据库和表,但用户的问题可能已经假设存在数据库。不过,为了完整性,可以给出创建表的示例,或者说明假设表结构。 例如,用户可能需要一个完整的示例,包括连接、增删改查的各个步骤,所以可以分步骤说明每个操作,并给出对应的代码片段。同时,提醒关闭游标和连接,释放资源。 可能还需要对比不同的库,比如pymysql和sqlite3,但用户的问题是关于MySQL,所以重点在pymysql。此外,引用[2]中的Flask示例可能涉及到Web应用,但用户可能只需要基础的数据库操作,所以以pymysql为主。 总结回答的结构应该是: 1. 安装驱动(如pymysql) 2. 连接数据库的步骤 3. 创建游标 4. 执行增删改查操作,分别给出示例代码 5. 事务提交和异常处理 6. 关闭连接 同时,需要确保代码符合用户提供的系统级指令,比如行内公式用$...$,但这里可能不涉及数学公式,所以可能不需要。但如果有示例中的代码块需要用正确的格式,比如Python代码用三个反引号包裹。 另外,用户要求生成相关问题,可能需要根据教程内容提出相关问题,例如事务处理、防止SQL注入、使用ORM等。 现在需要检查每个步骤是否正确,并确保引用的资料正确引用。例如,在连接数据库的部分,引用[1]中的代码示例,所以在适当的位置添加引用标记[^1]。同样,在Django部分引用[4]。 可能还需要注意,用户的问题可能希望了解不同的方法,比如使用原生SQL和ORM的区别,所以可以在教程中简要提及,并给出两种方式的例子,比如使用pymysql和Django ORM。 最后,确保回答结构清晰,分步骤说明,代码示例正确,并且引用的来源正确标注。</think>### Python后端连接MySQL数据库增删改查操作分步教程 #### 一、环境准备 1. 安装`pymysql`驱动: ```bash pip install pymysql ``` #### 二、连接数据库 ```python import pymysql # 建立数据库连接[^1] db = pymysql.connect( host='localhost', user='root', password='xxxx', database='test', charset='utf8mb4' ) cursor = db.cursor() # 创建游标对象 ``` #### 三、数据表结构示例 假设已存在学生表`students`: ```sql CREATE TABLE students ( id VARCHAR(10) PRIMARY KEY, name VARCHAR(20), math_score INT, english_score INT ) ``` #### 四、增删改查操作实现 1. **插入数据**(Create) ```python def insert_data(student_id, name, math, english): try: sql = "INSERT INTO students(id, name, math_score, english_score) VALUES (%s, %s, %s, %s)" cursor.execute(sql, (student_id, name, math, english)) db.commit() # 提交事务[^1] print("插入成功") except Exception as e: db.rollback() # 回滚事务 print(f"插入失败: {e}") ``` 2. **查询数据**(Read) ```python def query_data(): try: cursor.execute("SELECT * FROM students") results = cursor.fetchall() for row in results: print(f"学号: {row[0]}, 姓名: {row[1]}, 数学: {row[2]}, 英语: {row[3]}") except Exception as e: print(f"查询失败: {e}") ``` 3. **更新数据**(Update) ```python def update_score(student_id, new_math): try: sql = "UPDATE students SET math_score = %s WHERE id = %s" cursor.execute(sql, (new_math, student_id)) db.commit() print("更新成功") except Exception as e: db.rollback() print(f"更新失败: {e}") ``` 4. **删除数据**(Delete) ```python def delete_data(student_id): try: sql = "DELETE FROM students WHERE id = %s" cursor.execute(sql, (student_id,)) db.commit() print("删除成功") except Exception as e: db.rollback() print(f"删除失败: {e}") ``` #### 五、关闭连接 ```python cursor.close() # 关闭游标 db.close() # 关闭数据库连接 ``` #### 六、完整调用示例 ```python if __name__ == "__main__": insert_data('202302001', '张三', 90, 85) query_data() update_score('202302001', 95) delete_data('202302001') ``` #### 七、框架扩展(Flask/Django) 1. **Flask集成** 结合引用[2],可通过路由封装数据库操作: ```python from flask import Flask app = Flask(__name__) @app.route('/query') def query(): # 调用query_data()并返回JSON格式数据 pass ``` 2. **Django ORM** 使用Django模型替代原生SQL(引用[4]): ```python from django.db import models class Student(models.Model): id = models.CharField(max_length=10, primary_key=True) name = models.CharField(max_length=20) math_score = models.IntegerField() # 增删改查示例 Student.objects.create(id='202302002', name='李四', math_score=88) ```
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值