Flask进阶篇(二)数据库操作

方法一:

import sqlalchemy as db
from sqlalchemy.orm import sessionmaker, relationship
from sqlalchemy.ext.declarative import declarative_base


engine = db.create_engine('mysql+pymysql://root:root@host:3306/test')


# 创建数据库sqlalchemy工具对象
Base = declarative_base()


class Role(Base):
    __tablename__ = "tb_role"
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(64), unique=True)


class User(Base):
    __tablename__ = "tb_user"
    id = db.Column(db.Integer(), primary_key=True)
    name = db.Column(db.String(64), unique=True)
    email = db.Column(db.String(64), unique=True)
    pwd = db.Column(db.String(64))
    role_id = db.Column(db.ForeignKey(Role.id))
    company = relationship("Role", backref="user_of_role")


DBsession = sessionmaker(bind=engine)
session = DBsession()


if __name__ == '__main__':
    # 清空当前数据库中所有的表
    Base.metadata.drop_all(engine)
    # 创建表
    Base.metadata.create_all(engine)

    """增加"""
    # 新增一条数据
    # user = User(id=2, name='zhangsan', email='10000@qq.com', pwd='123456')
    # session.add(user)
    # 新增多条数据
    # role = [Role(id=1, name='剑魂'), Role(id=2, name='法师'), Role(id=3, name='元素')]
    # session.add_all(role)
    # session.commit()
    # session.close()

    """查询"""
    # query = session.query(User)
    # for user in query:
    #     print(user.name)
    # query2 = query.filter(User.id == 1).scalar()
    # print(query2.name)
    # query3 = query.filter(User.email.endswith("qq.com"))
    # for user in query3:
    #     print(user.name)

    """修改"""
    # query = session.query(User)
    # query.filter(User.id == 1).update({User.name: 'lisi'})
    # session.commit()

    """删除"""
    # query = session.query(User)
    # query.filter(User.id == 1).delete()
    # session.commit()

方法二:

from flask_sqlalchemy import SQLAlchemy
from flask import Flask
# 配置数据库连接
app=Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://root:root@host:3306/test'
app.config['SQLALCHEMY_COMMIT_ON_TEARDOWN'] = True
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True
db = SQLAlchemy(app)
# 创建用户角色表
class Role(db.Model):
    __tablename__ = 'role'
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(64), unique=True, nullable=True)
    # 定义一对多关联关系
    user = db.relationship('User', backref='role')

    def __repr__(self):
        return '<Role %r>' % self.name
# 创建用户表
class User(db.Model):
    __tablename__ = 'user'
    uid = db.Column(db.String(11), primary_key=True)
    uname = db.Column(db.String(11), unique=True, nullable=True)
    pwd = db.Column(db.String(11), nullable=True)
    phone = db.Column(db.String(11), nullable=True)
    regtime = db.Column(db.String(20), nullable=True)
    stat = db.Column(db.String(1), nullable=True)
    # 定义外键
    role_id = db.Column(db.Integer, db.ForeignKey('role.id'))

    def __repr__(self):
        return '<User %r>' % self.uname


db.create_all()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值