基于flask的在线笔记共享管理系统【4】(数据库操作类介绍+表单类介绍)

本文介绍了如何使用Python的Flask框架和WTForms库创建一个在线笔记共享管理系统。通过MysqlUtil类实现了数据库操作的封装,简化了数据库的增删改查过程。同时,定义了ArticleForm和RegisterForm两个表单类,用于处理文章发布和用户注册的表单验证,确保数据的完整性和格式正确性。
摘要由CSDN通过智能技术生成

基于flask的在线笔记共享管理系统

【4】(数据库操作类介绍)

每次对数据进行操做都要进行 ( 连接数据库–>执行sql语句–>关闭数据库 )的操作。建立一个操作类方便使用。
文件名:mysql_util.py

import pymysql   # 引入pymysql模块
import traceback # 引入python中的traceback模块,跟踪错误
import sys       # 引入sys模块

class MysqlUtil():
    def __init__(self):
        '''
            初始化方法,连接数据库
        '''
        host = '127.0.0.1'    # 主机名
        user = 'root'         # 数据库用户名
        password = '12345678'     # 数据库密码
        database = 'cloudnotes' # 数据库名称
        self.db = pymysql.connect(host=host,user=user,password=password,db=database) # 建立连接
        self.cursor = self.db.cursor(cursor=pymysql.cursors.DictCursor) # 设置游标,并将游标设置为字典类型
    
    def insert(self, sql):
        '''
            插入数据库
            sql:插入数据库的sql语句
        '''
        try:
            # 执行sql语句
            self.cursor.execute(sql)
            # 提交到数据库执行
            self.db.commit()
        except Exception:  # 方法一:捕获所有异常
            # 如果发生异常,则回滚
            print("发生异常", Exception)
            self.db.rollback()
        finally:
            # 最终关闭数据库连接
            self.db.close()

    def fetchone(self, sql):
        '''
            查询数据库:单个结果集
            fetchone(): 该方法获取下一个查询结果集。结果集是一个对象
        '''
        try:
            # 执行sql语句
            self.cursor.execute(sql)
            result = self.cursor.fetchone()
        except:  # 方法二:采用traceback模块查看异常
            # 输出异常信息
            traceback.print_exc()
            # 如果发生异常,则回滚
            self.db.rollback()
        finally:
            # 最终关闭数据库连接
            self.db.close()
        return result

    def fetchall(self, sql):
        '''
            查询数据库:多个结果集
            fetchall(): 接收全部的返回结果行.
        '''
        try:
            # 执行sql语句
            self.cursor.execute(sql)
            results = self.cursor.fetchall()
        except:  # 方法三:采用sys模块回溯最后的异常
            # 输出异常信息
            info = sys.exc_info()
            print(info[0], ":", info[1])
            # 如果发生异常,则回滚
            self.db.rollback()
        finally:
            # 最终关闭数据库连接
            self.db.close()
        return results

    def delete(self, sql):
        '''
            删除结果集
        '''
        try:
            # 执行sql语句
            self.cursor.execute(sql)
            self.db.commit()
        except:  # 把这些异常保存到一个日志文件中,来分析这些异常
            # 将错误日志输入到目录文件中
            f = open("\log.txt", 'a')
            traceback.print_exc(file=f)
            f.flush()
            f.close()
            # 如果发生异常,则回滚
            self.db.rollback()
        finally:
            # 最终关闭数据库连接
            self.db.close()

    def update(self, sql):
        '''
            更新结果集
        '''
        try:
            # 执行sql语句
            self.cursor.execute(sql)
            self.db.commit()
        except:
            # 如果发生异常,则回滚
            self.db.rollback()
        finally:
            # 最终关闭数据库连接
            self.db.close()


【4】(表单类介绍)

Forms.py文件创立俩个常用的form表单类模板。为系统功能实现提供方便。

from wtforms import Form, StringField, TextAreaField, PasswordField
from wtforms.validators import DataRequired,Length,Email,EqualTo

# Article Form Class
class ArticleForm(Form):
    title = StringField(
        '标题',
        validators=[
            # DataRequired(message= '标题长度应该在2-30字符之间'),
            DataRequired(message='长度不少于5个字符'),
            Length(min=2,max=30)
        ]
    )
    content = TextAreaField(
        '内容',
        validators=[
            DataRequired(message='长度不少于5个字符'),
            Length(min=5)
        ]
    )

# Register Form Class
class RegisterForm(Form):
    username = StringField(
        '用户名',
        validators=[
            DataRequired(message='请输入用户名'),
            Length(min=2, max=25,message='长度在2-25个字符之间')
        ]
    )
    email = StringField(
        '邮箱',
        validators = [
            DataRequired(message="请输入邮箱"),
            Email(message='请输入正确的邮箱格式')
        ]
    )
    password = PasswordField(
        '密码',
        validators = [
            DataRequired(message='密码不能为空'),
            Length(min=6,max=20,message='长度在6-20个字符之间'),
        ]
    )
    confirm = PasswordField(
        '确认密码',
        validators=[
            DataRequired(message='密码不能为空'),
            Length(min=6, max=20),
            EqualTo('password', message='2次输入密码不一致')
        ]
    )


基于 Flask在线笔记共享管理系统可以实现用户注册、登录、创建笔记、编辑笔记、分享笔记等功能。以下是一个简单的示例: 1. 安装 Flask 和相关依赖: ```shell pip install Flask ``` 2. 创建一个 Flask 应用并设置路由: ```python from flask import Flask, render_template, request, redirect, url_for from flask_sqlalchemy import SQLAlchemy app = Flask(__name__) app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///notes.db' db = SQLAlchemy(app) @app.route('/') def index(): # 显示所有笔记列表 notes = Note.query.all() return render_template('index.html', notes=notes) # 其他路由和功能实现略... if __name__ == '__main__': app.run() ``` 3. 创建一个笔记模型: ```python class Note(db.Model): id = db.Column(db.Integer, primary_key=True) title = db.Column(db.String(50), nullable=False) content = db.Column(db.Text, nullable=False) def __repr__(self): return self.title ``` 4. 创建数据库表: ```shell flask db init flask db migrate flask db upgrade ``` 5. 创建 HTML 模板文件,例如 `index.html`: ```html <!DOCTYPE html> <html> <head> <title>Online Note Sharing System</title> </head> <body> <h1>Notes</h1> <ul> {% for note in notes %} <li>{{ note.title }}</li> {% endfor %} </ul> </body> </html> ``` 以上是一个简单的基于 Flask在线笔记共享管理系统的示例,您可以根据需求进一步完善和扩展功能。注意,这只是一个简单的示例,实际开发中还需要考虑用户认证、权限管理、笔记编辑等复杂的功能和安全性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DreamBoy@

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值