美文网首页运维
SQLAIchemy总结

SQLAIchemy总结

作者: 一个心情记录者 | 来源:发表于2018-12-21 23:21 被阅读0次

        SQLAlchemy基础

                SQLAlchemy概述 SQLAlchemy安装 SQLAIchemy简介 SQLAIchemy构架 ORM模型

                数据库对象管理 连接mysql 声明映射 创建映射类 创建构架 创建映射类的实例 创建会话类 添加新对象 外键约束

        SQLAlchemy进阶

                查询操作 基本查询 使用ORM描述符进行查询 使用命名元组 修改显示字段名 排序 提取部分数据 结果过滤 常用过滤操作符 查询对象返回值 聚合 多表查询

                修改操作 更新数据 删除记录

能兼容各种数据库,但要结合方言

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

from sqlalchemy import create_engine, Column, Integer, String, ForeignKey, Date

from sqlalchemy.ext.declarative import declarative_base

from sqlalchemy.orm import sessionmaker      #创建会话类

engine = create_engine(                  #创建mysql引擎

    'mysql+pymysql://root:tedu.cn@localhost/tedu1807?charset=utf8',

    encoding='utf8',

    echo=True                #表示将日志输出到终端屏幕,默认为False

)

Session = sessionmaker(bind=engine)

Base = declarative_base()

class Departments(Base):

    __tablename__ = 'departments'

    dep_id = Column(Integer, primary_key=True)

    dep_name = Column(String(20), unique=True, nullable=False)

    def __str__(self):

        return '部门: %s' % self.dep_name

class Employees(Base):

    __tablename__ = 'employees'

    emp_id = Column(Integer, primary_key=True)

    emp_name = Column(String(20))

    gendar = Column(String(6))

    email = Column(String(50))

    phone = Column(String(11))

    dep_id = Column(Integer, ForeignKey('departments.dep_id') )

    def __str__(self):

        return '员工: %s' % self.emp_name

class Salary(Base):

    __tablename__ = 'salary'

    auto_id = Column(Integer, primary_key=True)  # auto_id

    date = Column(Date)

    emp_id = Column(Integer, ForeignKey('employees.emp_id'))  #不用reference

    basic = Column(Integer)

    awards = Column(Integer)

    def __str__(self):

        return '工资:%s:%s->%s' % (self.date, self.emp_id, (self.basic+self.awards))

if __name__ == '__main__':

    Base.metadata.create_all(engine)

------------------------------insert/add

from dbconn import Departments, Session, Employees, Salary

hr = Departments(dep_id=1, dep_name='hr')

op = Departments(dep_id=2, dep_name='运维部')

dev = Departments(dep_id=3, dep_name='开发部')

qa = Departments(dep_id=4, dep_name='测试')

session = Session()

session.add(hr)

session.add_all([op, dev, qa])

fa = Employees(emp_id=1, emp_name='xa', gendar='na', email='ss@xxx', phone='1501756890', dep_id=1)

fb = Employees(emp_id=2, emp_name='xb', gendar='na', email='ss@xxx', phone='1501759890', dep_id=4)

fc = Employees(emp_id=3, emp_name='xc', gendar='na', email='ss@xxx', phone='1517596890', dep_id=3)

fd = Employees(emp_id=4, emp_name='xd', gendar='na', email='ss@xxx', phone='1501796890', dep_id=1)

ff = Employees(emp_id=5, emp_name='xxf', gendar='na', email='ss@xxx', phone='1501759890', dep_id=2)

fg = Employees(emp_id=6, emp_name='xxg', gendar='na', email='ss@xxx', phone='1017596890', dep_id=4)

fh = Employees(emp_id=7, emp_name='xxh', gendar='na', email='ss@xxx', phone='1507596890', dep_id=1)

fi = Employees(emp_id=8, emp_name='xxi', gendar='na', email='ss@xxx', phone='1501759680', dep_id=2)

fj = Employees(emp_id=9, emp_name='xxj', gendar='na', email='ss@xxx', phone='1501596890', dep_id=4)

fk = Employees(emp_id=10, emp_name='xxk', gendar='na', email='ss@xxx', phone='1501796890', dep_id=1)

session.add_all([fa, fb, fc, fd, ff, fg, fh, fi, fj, fk])

session.commit()

session.close()

------------------------------insert/add

------------------------------select/查询

from dbconn import Departments, Session, Employees, Salary

session = Session()

##############查询

query1 = session.query(Departments)

print(query1)                        # query1只是sql语句

print(list(query1))                  #列表是所有实例的集合

for dep in query1:

    print('%s : %s' % (dep.dep_id, dep.dep_name))

#############查询,直接用list,结果是列表

query2 = session.query(Employees.emp_id, Employees.emp_name)

print(query2)

print(list(query2))

############排序

query3 = session.query(Departments).order_by(Departments.dep_id)

print(query3)

for dep in query3:

    print('%s : %s' % (dep.dep_id, dep.dep_name))

#############切片

query4 = session.query(Departments).order_by(Departments.dep_id)[0:2]

print(query4)              # 取切片后,就不是sql语句了,而是实例集合

for dep in query4:

    print('%s : %s' % (dep.dep_id, dep.dep_name))

#############filter过滤

query5 = session.query(Departments).filter(Departments.dep_id==3)  # 记得要加过滤的条件

print(query5)

for dep in query5:

    print('%s : %s' % (dep.dep_id, dep.dep_name))

############filter多次过滤

query6 = session.query(Employees).filter(Employees.dep_id==2)\

    .filter(Employees.email=='ss@xxx')

print(query6)

for emp in query6:

    print('%s : %s' % (emp.dep_id, emp.emp_name))

############filter 过滤符:in

query7 = session.query(Departments).filter(Departments.dep_id.in_([1,2,5]))

print(query7)

for dep in query7:

    print('%s: %s' % (dep.dep_id, dep.dep_name))

########### 查询对象返回值

query1 = session.query(Departments)

print(query1.all())                  # 取出全部,构成实例集合

query5 = session.query(Departments).filter(Departments.dep_id==3)

print(query5.one())                  # 返回一个具体的实例

query8 = session.query(Departments.dep_name, Departments.dep_id).filter(Departments.dep_id==2)

print(query8.scalar())                  # 调用one, 返回结果的第一项

# query9 = session.query(Departments.dep_id,Departments.dep_name).filter(Departments.dep_id==2)

# print(query9.scalar())

############聚合(算合)

query9 = session.query(Departments).count()

print(query9)

############ 多表查询

query10 = session.query(Employees.emp_name, Departments.dep_name)\

    .join(Departments, Employees.dep_id==Departments.dep_id)

print(query10.all())

query11 = session.query(Departments.dep_name, Employees.emp_name)\

    .join(Employees, Employees.dep_id==Departments.dep_id)

print(query11.all())

session.close()

------------------------------select/查询

------------------------------更新数据, 删除数据

from dbconn import Departments, Session, Employees

session = Session()

############# 更新数据

modify1 = session.query(Departments).filter(Departments.dep_name=='hr')

hr = modify1.one()

print(hr)

hr.dep_name = '人力资源部'                # 通过会话的字段赋值更新

##############session.delete()

delete = session.query(Employees).filter(Employees.emp_id==10)

emp = delete.one()

session.delete(emp)

session.commit()

session.close()

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

>>> sqlalchemy.

Display all 130 possibilities? (y or n)

sqlalchemy.ARRAY(                sqlalchemy.asc(

sqlalchemy.BIGINT(                sqlalchemy.between(

sqlalchemy.BINARY(                sqlalchemy.bindparam(

sqlalchemy.BLANK_SCHEMA          sqlalchemy.case(

sqlalchemy.BLOB(                  sqlalchemy.cast(

sqlalchemy.BOOLEAN(              sqlalchemy.collate(

sqlalchemy.BigInteger(            sqlalchemy.column(

sqlalchemy.Binary(                sqlalchemy.cprocessors

sqlalchemy.Boolean(              sqlalchemy.create_engine(

sqlalchemy.CHAR(                  sqlalchemy.cresultproxy

sqlalchemy.CLOB(                  sqlalchemy.cutils

sqlalchemy.CheckConstraint(      sqlalchemy.delete(

sqlalchemy.Column(                sqlalchemy.desc(

sqlalchemy.ColumnDefault(        sqlalchemy.dialects

sqlalchemy.Constraint(            sqlalchemy.distinct(

sqlalchemy.DATE(                  sqlalchemy.engine

sqlalchemy.DATETIME(              sqlalchemy.engine_from_config(

sqlalchemy.DDL(                  sqlalchemy.event

sqlalchemy.DECIMAL(              sqlalchemy.events

sqlalchemy.Date(                  sqlalchemy.exc

sqlalchemy.DateTime(              sqlalchemy.except_(

sqlalchemy.DefaultClause(        sqlalchemy.except_all(

sqlalchemy.Enum(                  sqlalchemy.exists(

sqlalchemy.FLOAT(                sqlalchemy.extract(

sqlalchemy.FetchedValue(          sqlalchemy.false(

sqlalchemy.Float(                sqlalchemy.func(

sqlalchemy.ForeignKey(            sqlalchemy.funcfilter(

sqlalchemy.ForeignKeyConstraint(  sqlalchemy.insert(

sqlalchemy.INT(                  sqlalchemy.inspect(

sqlalchemy.INTEGER(              sqlalchemy.inspection

sqlalchemy.Index(                sqlalchemy.interfaces

sqlalchemy.Integer(              sqlalchemy.intersect(

sqlalchemy.Interval(              sqlalchemy.intersect_all(

sqlalchemy.JSON(                  sqlalchemy.join(

sqlalchemy.LargeBinary(          sqlalchemy.lateral(

sqlalchemy.MetaData(              sqlalchemy.literal(

sqlalchemy.NCHAR(                sqlalchemy.literal_column(

sqlalchemy.NUMERIC(              sqlalchemy.log

sqlalchemy.NVARCHAR(              sqlalchemy.modifier(

sqlalchemy.Numeric(              sqlalchemy.not_(

sqlalchemy.PassiveDefault(        sqlalchemy.null(

sqlalchemy.PickleType(            sqlalchemy.nullsfirst(

sqlalchemy.PrimaryKeyConstraint(  sqlalchemy.nullslast(

sqlalchemy.REAL(                  sqlalchemy.or_(

sqlalchemy.SMALLINT(              sqlalchemy.outerjoin(

sqlalchemy.Sequence(              sqlalchemy.outparam(

sqlalchemy.SmallInteger(          sqlalchemy.over(

sqlalchemy.String(                sqlalchemy.pool

sqlalchemy.TEXT(                  sqlalchemy.processors

sqlalchemy.TIME(                  sqlalchemy.schema

sqlalchemy.TIMESTAMP(            sqlalchemy.select(

sqlalchemy.Table(                sqlalchemy.sql

sqlalchemy.Text(                  sqlalchemy.subquery(

sqlalchemy.ThreadLocalMetaData(  sqlalchemy.table(

sqlalchemy.Time(                  sqlalchemy.tablesample(

sqlalchemy.TypeDecorator(        sqlalchemy.text(

sqlalchemy.Unicode(              sqlalchemy.true(

sqlalchemy.UnicodeText(          sqlalchemy.tuple_(

sqlalchemy.UniqueConstraint(      sqlalchemy.type_coerce(

sqlalchemy.VARBINARY(            sqlalchemy.types

sqlalchemy.VARCHAR(              sqlalchemy.union(

sqlalchemy.alias(                sqlalchemy.union_all(

sqlalchemy.all_(                  sqlalchemy.update(

sqlalchemy.and_(                  sqlalchemy.util

sqlalchemy.any_(                  sqlalchemy.within_group(

相关文章

  • SQLAIchemy总结

    SQLAlchemy基础 SQLAlchemy概述 SQLAlchemy安装 SQLAIc...

  • 用ORM操作MySQL

    ORM Object Relactional Mapping对象关系映射。SQLAIchemy是一个数据库ORM框...

  • SQLAIchemy的使用笔记

    ORM框架的用法 初始化数据库链接 首先,创建一个数据库的链接,并创建一个链接该数据库的接口对象。 绑定数据表 通...

  • 专题总结(待续。。。)

    质粒总结 引物总结 抗体总结 细胞系总结 模式动物总结 机制功能总结

  • 工作总结――让你欢喜让你忧

    哇哈哈,工作总结...... 工作中,我们常会被要求写各种总结,活动总结、销售总结、培训总结、月总结、季度总结.....

  • 工作总结万能公式

    总结汇报是职场上经常遇到的事,有周总结、月总结、季度总结、年中总结、年终总结、重点项目总结、重要环节总结等...

  • 缺不了的总结

    从小到大,缺不了的总结。知识点总结,读书电影的观后感,章节总结,学科总结,学期总结,新年总结,工作周总结月总结年中...

  • Java 知识点总结

    Java技术总结 总结内容如下: 1.语法总结, 2 面向对象总结, 3 线程总结, 4 输入输出流总结, 5 集...

  • 写在三十六岁(5)

    总结 又是一年十二月,各种总结开始写起,工作总结、家庭总结、财务总结…… 总结有它一定的存在的...

  • 阿里腾讯头条美团等iOS面试总结

    阿里iOS面试总结 头条iOS面试总结 腾讯iOS面试总结 百度iOS面试总结 美团iOS面试总结

网友评论

    本文标题:SQLAIchemy总结

    本文链接:https://www.haomeiwen.com/subject/rasbkqtx.html