• SQLAlchemy(一)


    说明

    SQLAlchemy只是一个翻译的过程,我们通过类来操作数据库,他会将我们的对应数据转换成SQL语句。

    运用ORM创建表

    #!/usr/bin/env python
    #! -*- coding:utf-8 -*-
    
    import sqlalchemy
    from sqlalchemy import create_engine
    from sqlalchemy.ext.declarative import declarative_base
    from sqlalchemy import Column, Integer, String
    from sqlalchemy.orm import sessionmaker
    print(sqlalchemy.__version__)
    
    
    engine = create_engine('sqlite:///dbyuan1.db', echo=True)
    
    Base = declarative_base()  # 生成一个SQLORM基类
    
    
    class User(Base):
        __tablename__ = 'users'
    
        id = Column(Integer, primary_key=True)
        name = Column(String)
        fullname = Column(String)
        password = Column(String)
    
        def __repr__(self):
           return "<User(name='%s', fullname='%s', password='%s')>" % (
                                self.name, self.fullname, self.password)
    
    Base.metadata.create_all(engine)  # 创建所有表结构
    
    ed_user = User(name='xiaoyu', fullname='Xiaoyu Liu', password='123')
    print(ed_user)
    # 这两行触发sessionmaker类下的__call__方法,return得到 Session实例,赋给变量session,所以session可以调用Session类下的add,add_all等方法
    MySession = sessionmaker(bind=engine)
    session = MySession()
    
    session.add(ed_user)
    
    session.commit()
    
    代码

    一、链接数据库

    engine = create_engine('sqlite:///dbyuan1.db', echo=True)

    说明:
    echo=True:当设置了这个参数的时候,表示当我们通过类操作数据库,将数据装换成SQL语句,并在我们执行的时候,会给我们显示出来。

    二、生成基类

    类继承基类

    Base = declarative_base()#生成一个SQLORM基类

    1481558848235

    三、创建表

    __tablename__ = 'users'

    说明:
    __tablename__ :固定格式。后面跟自定义的表名。

    四、构建表的列名

    1481560063759

    说明:
    1、这些字段,创建的就是数据库中表对应的列名。
    2、Column:创建列
    3、Integer, String:这是是创建列的数据类型。
    4、primary_key:设置主键
    5、autoincrement:设置自增,默认设置主键是自增的。

    1481559327189

    五、创建表

    之间的操作是将表定义好,下面的才是创建表。

    Base.metadata.create_all(engine) #创建所有表结构

    说明:
    前面将函数,继承一个基类,用处就在这里,他会将他的子类代表的表在数据库中创建。

    执行目前的代码结果:

    1481560149441

    通过ORM操作表

    一、删除表

    Base.metadata.drop_all(engine)

    说明:
    这个功能个,删除所有的表。

    二、增加数据

    MySession = sessionmaker(bind=engine)
    session = MySession()
    
    session.add(ed_user)

    说明:
    创建了一个对象,并对象加括号,执行对象中的__call__方法,会返回一个session对象,里面封装了各种操作数据库表的方法。

    • .add():往表中增加单条数据
    • .sdd_all():往表中批量增加数据
    • .query():查看数据,后面跟具体查询内容

    1481561451001

    query接收参数:

    • User:表示操作的表的的名字。
    • all():表示查看全部数据。
    • 上图返回的结果,是一个列表,里面包含对应表列个数的对象,一列就是一个对象。

    strong text特殊说明:

    1481562360757

    图中 "~":表示取反的意思。

  • 相关阅读:
    (转)运维角度浅谈MySQL数据库优化
    关于MySQL的null值
    MySQL优化——or条件优化
    MySQL优化原理
    Xcode Archive打包失败问题
    ionic3 对android包进行签名
    ios 审核未通过 相机相册权限问题
    js计算两个日期相差天数
    截取URL链接中字段的方法
    ionic3 自定义组件 滑动选择器 ion-multi-picker
  • 原文地址:https://www.cnblogs.com/jayafs/p/6181458.html
Copyright © 2020-2023  润新知