tornado实战之常用笔记

1、使用execute批量创建数据

self.db.execute(表名.__table__.insert(), [
   {'字段名1': randint(1, 100), '字段名2':'aaa','字段名3': randint(1, 100)} 
   for i in xrange(500)
])
#提交数据
self.db.commit()
!

2、关于sqlalchemy的一对多的查询(重点也是常用的)
1、在一对多的处理中主要使用是一个表的一个字段是别的表某一列中指定的值(所谓的外键约束)
2、在一对多的关系表中子表中使用外键约束[ForeignKey(主表.列名)]注意点主表与子表关联的列的属性要一致
3、父与子表中互相查询使用relationship
4、新建一个学生表(student)和一个班级表(classes)

from sqlalchemy import create_engine, Column, Integer, String, Boolean, DateTime, ForeignKey


#导入relationship

from sqlalchemy.orm import relationship


#新创建一个学生表的类(子表)

class Student(Base):
    __tablename__ = "student"
    id = Column(Integer, primary_key=True, autoincrement=True)
    username = Column(String(100), nullable=False)
    create_time = Column(DateTime, default=datetime.now)
    # 创建一个外键约束(在子表中创建外键约束,只能是父表中可枚举的值)
    class_id = Column(Integer, ForeignKey('classess.id'))
    """
    使用relationship()反向查找
    理解:
    在student表中可以通过classes查找到classess表里面的数据
    在classess表里面可以通过students查找到student表里面的数据
    """
    classes = relationship("Classess", backref="students")

# 创建一个班级表的类(父表)

class Classess(Base):
    __tablename__ = "classess"
    id = Column(Integer, primary_key=True, autoincrement=True)
    classname = Column(String(100), nullable=False)
    createtime = Column(DateTime, default=datetime.now)

查询:

#通过学生查询到该学生的班级

aa = self.db.query(Student).filter_by(id=1).first()
print aa.classes.classname


#查询班级下所有的学生

bb = self.db.query(Classess).filter_by(id=2).first()
for stu in bb.students:
    print stu.username

参考:https://blog.csdn.net/kuangshp128/article/details/73413584 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值