zoukankan      html  css  js  c++  java
  • flask中SQLAlchemy学习

    ------------------------------------2019-08-22 17:53:54更新------------------------------

    SQLALchemy实在是难啊,这次写的不好,菜鸡落泪。下次抽空更新的时候,会尽量把SQLALchemy详细更新完。先写写下次更新什么。filter和filter_by的差别,filter的用法,relation关系中cascade级联的操作和lazy的详解,db.Column中的几个参数。SQLALchemy中的偏易和切片,limit,offset,slice,[]。group_by和having。join,排序方法,子查询等xxx我的天啊,数据库太难了吧,(菜鸡忍住不哭)为之前感觉数据库学着简单感到惭愧。。。。

    -------------------------------------------------------------------------------------------------

     00x1

      SQLALchmey是一个库,运用这个库可以避免SQL语句所造成的低端错误。

    在运用SQLALchemy之前要先pip install 安装一下,这样才能够进行导入

     

      具体运用增删改查

     增:

    admin = User(username='admin', password='root',email='admin@example.com')
    db.session.add(admin)   # 提交一条数据
    db.session.commit()
    #commit是提交事务

    其中User是一个数据表

     删除:

      #1.先将要修改的数据查找出来
        admin  = User.query.filter(User.username == 'admin').first()
        #2.把这条数据删除
        db.session.delete(admin)
        #3.做事务的提交
        db.session.commit()

    修改:

    #1.先将要修改的数据查找出来
        admin  = User.query.filter(User.username == 'admin').first()
        #2.将这条数据你需要进行修改的地方进行修改
        admin.username = 'root'
        #3.做事务的提交
        db.session.commit()

    查询:

    #select * from User where User.username='admin'
        #1.先将要修改的数据查找出来
        admin  = User.query.filter(User.username == 'admin').first()
        print(admin.username)
        print(admin.password)

    00x2 几个复杂的逻辑关系:

      一对一,一对多,多对多。这个地方比较恶心,不容易分清,经常用到的就是一对多,多对多的关系,一对一的基本上是没有见到过。

    一对多指的是比如一个用户只能是和多个文章在一起。这里面需要额外了解的是主键和外键,主键是一个数据表中必须指明的,没有指明主键的话,在创建数据表的时候会出错。外键是一个连接的作用,通过外键可以从一张数据表查找到另外一张数据表。

    数据库中一对一关系:

      

    class User(db.Model):
    
        __tablename__ = 'user'
        id = db.Column(db.Integer , nullable=False ,primary_key=True)
        username = db.Column(db.String(50))
    class Artcile(db.Model):
    __tablename__ = 'article'
    id = db.Column(db.Integer , nullable=False ,primary_key=True)
    content = db.Column(db.String(100) , nullable=False)
    uid = db.Column(db.Integer ,db.ForeignKey('user.id'))
    author = db.relationship("User" , backref = "balala")
    # 创建外键,使得两张表之间进行关联

    多对多关系:

    tags = db.Table('tags',
        db.Column('tag_id', db.Integer, db.ForeignKey('tag.id')),
        db.Column('page_id', db.Integer, db.ForeignKey('page.id'))
    )
    
    class Page(db.Model):
        id = db.Column(db.Integer, primary_key=True)
        tags = db.relationship('Tag', secondary=tags, backref=db.backref('pages', lazy='dynamic'))
    
    class Tag(db.Model):
        id = db.Column(db.Integer, primary_key=True)

     -------先回家,回家更新-----------------------------------------------------------

  • 相关阅读:
    Idea默认的全局设置,如Maven等
    mybatis中Parameter index out of range (1 > number of parameters, which is 0).
    SpringBoot入门-2(两种热部署方式)
    Java中关于static语句块的理解
    HashMap源码剖析
    keytool用法总结
    Tomcat配置https
    git的安装及其使用
    java中Arrays类的应用
    三次握手四次挥手
  • 原文地址:https://www.cnblogs.com/Triangle-security/p/11383737.html
Copyright © 2011-2022 走看看