博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
tornado的ORM
阅读量:5146 次
发布时间:2019-06-13

本文共 4122 字,大约阅读时间需要 13 分钟。

tornado的ORM

 


  • 安装sqlalchemy和pymysql
    • pip install sqlalchemy
    • pip install pymysql
  • 连接数据库
    • 1 from sqlalchemy import create_engine 2  3  4  5 config = { 6     'HOST': '', 7     'USERNAME': '', 8     'PASSWORD': '', 9     'PORT': '',10     'DATABASE': '',11     'PARAMS': ''12 }13 14 15 DB_URL = 'mysql+pymysql://{USERNAME}:{PASSWORD}@{HOST}:{PORT}/{DATABASE}?{PARAMS}'16 17 engine = create_engine(DB_URL.format(**config))18 19 20 21 if __name__ == '__main__':22     conc = engine.connect()23     result = conc.execute('select 1')24     print(result.fetchone())

      如果连接成功,则控制台会出现(1,)的结果

  • 数据库建模
    • 建立base类
      1 from sqlalchemy import create_engine 2 from sqlalchemy.ext.declarative import declarative_base 3  4  5 config = { 6     'HOST': '', 7     'USERNAME': '', 8     'PASSWORD': '', 9     'PORT': '',10     'DATABASE': '',11     'PARAMS': ''12 }13 14 15 DB_URL = 'mysql+pymysql://{USERNAME}:{PASSWORD}@{HOST}:{PORT}/{DATABASE}?{PARAMS}'16 17 engine = create_engine(DB_URL.format(**config))18 19 Base = declarative_base(engine)
    • 使用base类并建立表格
      1 from settings import Base 2 from sqlalchemy import Column, Integer, String, DateTime, Boolean 3 from datetime import datetime 4  5  6 class User(Base): 7     __tablename__ = 'user'  # 指定表名 8     id = Column(Integer, autoincrement=True, primary_key=True) 9     username = Column(String(20))10     password = Column(String(20))11     create_time = Column(DateTime, default=datetime.now())12     is_login = Column(Boolean, default=False, nullable=False)13 14 15 16 17 if __name__ == '__main__':18     Base.metadata.create_all()  # 创建表格

      创建的表名必须为该类的__tablename__属性,Colum新建一个字段,然后给Colum传参来进行约束

  • 简单的增删改查
      • 1 from sqlalchemy import create_engine 2 from settings import DB_CONFIG 3 from sqlalchemy.ext.declarative import declarative_base 4 from sqlalchemy.orm import sessionmaker 5  6  7 DB_URL = 'mysql+pymysql://{USERNAME}:{PASSWORD}@{HOST}:{PORT}/{DATABASE}?{PARAMS}' 8  9 engine = create_engine(DB_URL.format(**DB_CONFIG))10 11 Base = declarative_base(engine)12 13 Session = sessionmaker(engine)14 15 session = Session()

        与上面不同的是,新建了一个Session对象,然后将这个对象实例化,接下来的数据库操作都用到这个实例对象来操作

      • 1 from config import Base 2 from sqlalchemy import Column, Integer, String, DateTime, Boolean 3 from datetime import datetime 4  5 class User(Base): 6     __tablename__ = 'user' 7     id = Column(Integer, primary_key=True, autoincrement=True) 8     username = Column(String(20)) 9     password = Column(String(20))10     create_time = Column(DateTime, default=datetime.now())11     is_login = Column(Boolean, default=False, nullable=False)12 13

        表结构

      • 1 from wechat import User 2 from config import session 3  4 def add(): 5     user = User(username='ivy', password='123456') 6     session.add(user) 7     session.commit() 8  9 10 if __name__ == '__main__':11     add()

        添加一条

      • 1 from wechat import User 2 from config import session 3  4 def add(): 5  6     session.add_all([ 7         User(username='ivy', password='123456'), 8         User(username='ivy1', password='123456'), 9         User(username='ivy2', password='123456'),10     ])11     session.commit()12 13 14 if __name__ == '__main__':15     add()

        添加多条

      • 1 from wechat import User 2 from config import session 3  4 def search(): 5     session.query(User).all()  # 查找所有 6     result = session.query(User).first().username  # 查找第一个 7     result = session.query(User).filter(User.username=='ivy').first().password 8     print(result) 9 10 11 12 if __name__ == '__main__':13     search()
      • 1 from wechat import User 2 from config import session 3  4  5 def update(): 6     session.query(User).filter(User.username == 'ivy').update( 7         { 8             User.username: 'bob', 9             User.password: '123654',10         }11     )12     session.commit()13 14 15 if __name__ == '__main__':16     update()

        更改的数据以字典的键值对的形式传入

      • 1 from wechat import User 2 from config import session 3  4  5 def delete(): 6     result = session.query(User).filter(User.username == 'bob').first() 7  8     session.delete(result) 9     session.commit()10 11 12 if __name__ == '__main__':13     delete()

        先查询结果,再讲查询的结果删除,如果查询的结果为空,则删除会报错。

 

转载于:https://www.cnblogs.com/ivy-blogs/p/10820896.html

你可能感兴趣的文章
【Linux】ping命令详解
查看>>
Oracle中包的创建
查看>>
关于PHP会话:session和cookie
查看>>
jQuery on(),live(),trigger()
查看>>
treegrid.bootstrap使用说明
查看>>
[Docker]Docker拉取,上传镜像到Harbor仓库
查看>>
导航,头部,CSS基础
查看>>
[USACO 2017 Feb Gold] Tutorial
查看>>
gzip
查看>>
转负二进制(个人模版)
查看>>
LintCode-Backpack
查看>>
查询数据库锁
查看>>
我对于脚本程序的理解——百度轻应用有感
查看>>
面试时被问到的问题
查看>>
注解小结
查看>>
list control控件的一些操作
查看>>
绝望的第四周作业
查看>>
一月流水账
查看>>
npm 常用指令
查看>>
判断字符串在字符串中
查看>>