tornado的ORM
tornado的ORM
- 安装sqlalchemy和pymysql
- pip install sqlalchemy
- pip install pymysql
- 连接数据库
from sqlalchemy import create_engine config = {
'HOST': '',
'USERNAME': '',
'PASSWORD': '',
'PORT': '',
'DATABASE': '',
'PARAMS': ''
} DB_URL = 'mysql+pymysql://{USERNAME}:{PASSWORD}@{HOST}:{PORT}/{DATABASE}?{PARAMS}' engine = create_engine(DB_URL.format(**config)) if __name__ == '__main__':
conc = engine.connect()
result = conc.execute('select 1')
print(result.fetchone())如果连接成功,则控制台会出现(1,)的结果
- 数据库建模
- 建立base类
from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base config = {
'HOST': '',
'USERNAME': '',
'PASSWORD': '',
'PORT': '',
'DATABASE': '',
'PARAMS': ''
} DB_URL = 'mysql+pymysql://{USERNAME}:{PASSWORD}@{HOST}:{PORT}/{DATABASE}?{PARAMS}' engine = create_engine(DB_URL.format(**config)) Base = declarative_base(engine) - 使用base类并建立表格
from settings import Base
from sqlalchemy import Column, Integer, String, DateTime, Boolean
from datetime import datetime class User(Base):
__tablename__ = 'user' # 指定表名
id = Column(Integer, autoincrement=True, primary_key=True)
username = Column(String(20))
password = Column(String(20))
create_time = Column(DateTime, default=datetime.now())
is_login = Column(Boolean, default=False, nullable=False) if __name__ == '__main__':
Base.metadata.create_all() # 创建表格创建的表名必须为该类的__tablename__属性,Colum新建一个字段,然后给Colum传参来进行约束
- Column的常用参数:
- default: 默认值,可以传一个函数体,default的值等于这个函数体执行后返回的值
- nullable:是否可为空
- primary_key:是否为主键
- unique: 是否唯一
- autoincrement: 是否自增长
- onupdate: 更新的时候执行的函数,和default一样,可以传一个函数体
- name: 该属性在数据库中的字段的映射,默认是属性名
- 常用的数据类型
- Integer: 整形
- Float: 浮点类型
- Boolean:布尔
- DECIMAL: 定点类型: DECIMAL第一个参数为整数位的个数,第二位参数为小数位的个数
- Enum:枚举类型: Enum可以借助python3自带的enum包来实现更加简便
- Date: 传递datetime.date()
- DateTime: 传递datetime.datetime()
- Time:传递datetime.time() 进去
- String: 字符串型, 使用时需要制定长度
- Text: 文本类型
- LONGTEXT: 长文本类型
- 建立base类
- 简单的增删改查
- 增
from sqlalchemy import create_engine
from settings import DB_CONFIG
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker DB_URL = 'mysql+pymysql://{USERNAME}:{PASSWORD}@{HOST}:{PORT}/{DATABASE}?{PARAMS}' engine = create_engine(DB_URL.format(**DB_CONFIG)) Base = declarative_base(engine) Session = sessionmaker(engine) session = Session()与上面不同的是,新建了一个Session对象,然后将这个对象实例化,接下来的数据库操作都用到这个实例对象来操作
from config import Base
from sqlalchemy import Column, Integer, String, DateTime, Boolean
from datetime import datetime class User(Base):
__tablename__ = 'user'
id = Column(Integer, primary_key=True, autoincrement=True)
username = Column(String(20))
password = Column(String(20))
create_time = Column(DateTime, default=datetime.now())
is_login = Column(Boolean, default=False, nullable=False)表结构
from wechat import User
from config import session def add():
user = User(username='ivy', password='')
session.add(user)
session.commit() if __name__ == '__main__':
add()添加一条
from wechat import User
from config import session def add(): session.add_all([
User(username='ivy', password=''),
User(username='ivy1', password=''),
User(username='ivy2', password=''),
])
session.commit() if __name__ == '__main__':
add()添加多条
- 查
from wechat import User
from config import session def search():
session.query(User).all() # 查找所有
result = session.query(User).first().username # 查找第一个
result = session.query(User).filter(User.username=='ivy').first().password
print(result) if __name__ == '__main__':
search()
- 改
from wechat import User
from config import session def update():
session.query(User).filter(User.username == 'ivy').update(
{
User.username: 'bob',
User.password: '',
}
)
session.commit() if __name__ == '__main__':
update()更改的数据以字典的键值对的形式传入
- 删
from wechat import User
from config import session def delete():
result = session.query(User).filter(User.username == 'bob').first() session.delete(result)
session.commit() if __name__ == '__main__':
delete()先查询结果,再讲查询的结果删除,如果查询的结果为空,则删除会报错。
- 每个session执行完毕之后都要close()
- 增
tornado的ORM的更多相关文章
- Tornado + Bootstrap 快速搭建自己的web应用
前言 最近用 python tordado 框架, 整了一个模板页面, 用于接入与发布数据的展示, tornado 简单易用, bootstrap 比较流行, 用起来也省事, 配合起来做些小案例非常迅 ...
- tornado 06 数据库—ORM—SQLAlchemy——基本内容及操作
tornado 06 数据库—ORM—SQLAlchemy——基本内容及操作 一. ORM #在服务器后台,数据是要储存在数据库的,但是如果项目在开发和部署的时候,是使用的不同的数据库,该怎么办?是不 ...
- tornado 07 数据库—ORM—SQLAlchemy—查询
tornado 07 数据库—ORM—SQLAlchemy—查询 引言 #上节课使用query从数据库查询到了结果,但是query返回的对象是直接可用的吗 #在query.py内输入一下内容 from ...
- tornado+sqlalchemy+celery,数据库连接消耗在哪里
随着公司业务的发展,网站的日活数也逐渐增多,以前只需要考虑将所需要的功能实现就行了,当日活越来越大的时候,就需要考虑对服务器的资源使用消耗情况有一个清楚的认知. 最近老是发现数据库的连接数如果 ...
- 浅谈tornado项目应用设计
一.预备知识 最近开始尝试做一些tornado商城项目,在开始之前需要引入一些项目设计知识,如接口,抽象方法抽象类,组合,程序设计原则等,个人理解项目的合理设计可增加其灵活性,降低数据之间的耦合性,提 ...
- Tornado实战项目(伪JD商城)
预备知识 在之前tornado商城项目中,在开始之前需要引入一些项目设计知识,如接口,抽象方法抽象类,组合,程序设计原则等,个人理解项目的合理设计可增加其灵活性, 降低数据之间的耦合性,提高稳定性,下 ...
- tornado web高级开发项目之抽屉官网的页面登陆验证、form验证、点赞、评论、文章分页处理、发送邮箱验证码、登陆验证码、注册、发布文章、上传图片
本博文将一步步带领你实现抽屉官网的各种功能:包括登陆.注册.发送邮箱验证码.登陆验证码.页面登陆验证.发布文章.上传图片.form验证.点赞.评论.文章分页处理以及基于tornado的后端和ajax的 ...
- tornado 学习笔记2 Python web主流框架
2.1 Django 官方网址:https://www.djangoproject.com/ 简介:Django is a high-level Python Web framework that e ...
- Tornado sqlalchemy
上篇文章提到了,最近在用 Python 做一个网站.除了 Tornado ,主要还用到了 SQLAlchemy.这篇就是介绍我在使用 SQLAlchemy 的过程中,学到的一些知识. 首先说下,由于最 ...
随机推荐
- activated钩子函数
activated钩子函数是在组件被激活后的钩子函数,mounted是不保证组件在document中,也就是组件还没有被激活,因此可以理解为activated执行在mounted之后. 在跳转传值时, ...
- PBM error occurred during PreCloneCheckCallback: 由于目标计算机积极拒绝,无法连接
问题如下: 迁移存储和主机的时候发生错误,错误如下: 出现了常规系统错误: PBM error occurred during PreCloneCheckCallback: 由于目标计算机积极拒绝,无 ...
- python飞机大战简单实现
小游戏飞机大战的简单代码实现: # 定义敌机类 class Enemy: def restart(self): # 重置敌机的位置和速度 self.x = random.randint(50, 400 ...
- Spring框架——IOC 自动装载
IOC自动装载有两种形式 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns=" ...
- c# 自定义含有标题的容器控件(标题背景为渐变色)
1.控件效果图 此效果图中的标题颜色.字号及字体可以在控件属性中设置.标题背景的渐变色及布局内容的背景色也可以在属性中设置. 2.实现的代码(用户控件) public partial class Uc ...
- 动态规划-买卖股票的最佳时机 V
2020-03-11 18:19:00 问题描述: 给出一个股票n天的价格,每天最多只能进行一次交易,可以选择买入一支股票或卖出一支股票或放弃交易,输出能够达到的最大利润值 样例 样例 1: 给出 ` ...
- MFC之创建多级动态菜单
一开始以我是这样做的,结果是错误的: 这段代码第一次点击时,会在第6个位置创建MFC菜单,我本以为再次点击,menu->GetSubMenu(5)返回的值就不会为空了,但事实是它返回了NULL, ...
- TensorFlow-Bitcoin-Robot:一个基于 TensorFlow LSTM 模型的 Bitcoin 价格预测机器人。
简介 TensorFlow-Bitcoin-Robot:一个基于 TensorFlow LSTM 模型的 Bitcoin 价格预测机器人. 文章包括一下几个部分: 1.为什么要尝试做这个项目? 2.为 ...
- 如何搭建本地web服务
IIS服务是windows自带的web服务,我们可以用来搭建本地网站,供局域网内的用户之前访问,比如办公室的同事之间,一个教室里的同学们. 先说明这是Windows10 x64位 家庭普通版的系统. ...
- 16.如何查找所需的maven的依赖
http://mvnrepository.com/ 1.先打开上面的网址 搜索需要的依赖,点进去 2.选择需要的版本 3.红框中的就是依赖的地址 此外也有其他自动化构建工具所需要的地址