开源一个基于SQLAlchemy左右值存储的树组件

TreeModel for SQLAlchemy

在数据库中存储树是常见的应用,一般是使用PID的原理来保存的。

获取子节点时用select * from pid=xxx就可以了,但这种机制缺点很多,如果要获取所有后代就需要进行

多次递归调用了,效率很差,因此就有了基于左右值原理存储树的机制,优点多多。

具体原理可以看这篇文章,狂点这里

项目地址:

基于SQLAlcemy ORM库,利用左右值原理来实现树状存储的库。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以为您介绍一下基于SQLAlchemy的登陆系统。SQLAlchemy一个Python的ORM库,可以方便地与数据库交互。下面是一个简单的登陆系统的代码,使用了SQLite数据库和Flask框架: ```python from flask import Flask, render_template, request, redirect, url_for, session from sqlalchemy import create_engine, Column, Integer, String from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm import sessionmaker app = Flask(__name__) app.secret_key = 'mysecretkey' engine = create_engine('sqlite:///users.db', echo=True) Base = declarative_base() class User(Base): __tablename__ = 'users' id = Column(Integer, primary_key=True) username = Column(String(50), unique=True) password = Column(String(50)) Base.metadata.create_all(engine) Session = sessionmaker(bind=engine) db_session = Session() @app.route('/') def home(): return render_template('home.html') @app.route('/login', methods=['GET', 'POST']) def login(): if request.method == 'POST': username = request.form['username'] password = request.form['password'] user = db_session.query(User).filter_by(username=username, password=password).first() if user: session['username'] = user.username return redirect(url_for('profile')) else: return render_template('login.html', message='Wrong username or password!') else: return render_template('login.html') @app.route('/profile') def profile(): if 'username' in session: return render_template('profile.html', username=session['username']) else: return redirect(url_for('login')) @app.route('/logout') def logout(): session.pop('username', None) return redirect(url_for('home')) ``` 在这个代码中,我们定义了一个User模型类,它映射到数据库中的users表,包含id、username和password三个字段。我们使用Flask框架来处理HTTP请求,并使用session来保存用户的登录状态。 在/login路由中,我们首先从表单中获取用户名和密码,然后使用SQLAlchemy查询数据库中是否存在这个用户。如果存在,则将用户名存储到session中,并重定向到/profile路由。否则,返回一个错误消息。 在/profile路由中,我们检查用户是否已经登录,如果已经登录,则返回用户的个人资料页面。否则,重定向到/login路由。 在/logout路由中,我们删除session中的用户名,并重定向到首页。 这是一个简单的基于SQLAlchemy的登陆系统的实现。当然,真正的生产环境中需要更加完善的安全机制,比如密码加盐哈希存储,防止SQL注入等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值