【Python】SQLAlchemy例程

前言

SQLAlchemy是Python下的一个工具包,提供了SQL工具包及对象关系映射(ORM)工具。这篇文章主要是记录一份可以使用的例程(TODO代码),以后做项目的时候可以直接从这里拷贝并扩展。

开发环境

Python版本:3.5.1
SQLAlchemy版本:1.1.4
操作系统:64位 Win10

例程

from sqlalchemy import create_engine
from sqlalchemy import Column, String, Integer
from sqlalchemy.orm import sessionmaker
from sqlalchemy.ext.declarative import declarative_base

# 以下是密码加密用
from werkzeug.security import generate_password_hash, check_password_hash

# 创建对象的基类:
Base = declarative_base()

# 定义一张表
class User(Base):
    # 表的名字:
    __tablename__ = 'users'

    # 表的结构:
    id = Column(Integer, primary_key=True)
    username = Column(String(32), unique=True, index=True)
    password_hash = Column(String(128))

    def __repr__(self):
        return self.username

    @property
    def password(self):
        raise AttributeError(u'密码不可读!')

    @password.setter
    def password(self, password):
        """以加密方式存储密码"""
        self.password_hash = generate_password_hash(password)

    def verify_password(self, password):
        """验证密码"""
        return check_password_hash(self.password_hash, password)



if __name__ == '__main__':
    # 1、建立数据库连接:
    engine = create_engine('sqlite:///:memory:', echo=True)

    #Base.metadata.drop_all(engine)
    # 2、创建表
    Base.metadata.create_all(engine)

    # 3、创建DBSession类型:
    DBSession = sessionmaker(bind=engine)
    # 4、创建session对象:
    session = DBSession()

    # 查找User对象
    u = session.query(User).filter_by(id=1).first()
    if None == u:
        print('创建id=1的帐号')
        # 5、创建User对象
        u = User(id=1, username='username', password='123456')
        # 6、添加到session
        session.add(u)
        # 7、提交并保存到数据库:
        session.commit()

    print(u)
    # 8、关闭连接
    session.close()
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值