tornado连接数据库

ORM

对象关系映射(英语:(Object Relational Mapping,简称ORM,或O/RM,或O/R mapping),是一种程序技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换 。从效果上说,它其实是创建了一个可在编程语言里使用的–“虚拟对象数据库”。

通过 ORM 可以不用关心后台是使用的哪种数据库,只需要按照 ORM 所提供的语法规则去书写相应的代码, ORM 就会自动的转换成对应对应数据库的 SQL 语句

SQLAlchemy连接数据库

安装: mysql
安装python包: pymysql、sqlalchemy

pip install -i https://pypi.douban.com/simple pymysql
pip install -i https://pypi.douban.com/simple sqlalchemy

在这里插入图片描述

在项目新建models

db.py 是一些配置信息
auth.py 是定义表字段
在这里插入图片描述

from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
# 数据库数据
HOST = '127.0.0.1'
PORT = '3306'
DATABASE = 'tornado'
USERNAME = 'admin'
PASSWORD ='Root110qwe'
# 数据连接 URL
DB_url = 'mysql+pymysql://{}:{}@{}:{}/{}?charset=utf8'.format(
    USERNAME,PASSWORD,HOST,PORT,DATABASE)
# 连接数据库
engine = create_engine(DB_url)
BSAE = declarative_base(engine)
# 创建会话 用于数据(增删查改)
Session = sessionmaker(bind=engine)
# 测试
if __name__ == '__main__':
    connection = engine.connect()
    result= connection.execute('select 1')
    print(result.fetchone())

在这里插入图片描述

from datetime import datetime
from sqlalchemy import Column, Integer, String, DateTime
from models.db import BSAE
# 类来表示数据库里面的表
class User(BSAE):
    __tablename__ = 'user'
    id = Column(Integer,primary_key=True,autoincrement=True)
    username = Column(String(20),nullable=False)
    password = Column(String(50))
    creatime = Column(DateTime,default=datetime.now)
if __name__ == '__main__':
    # 创建好的 Module 映射到数据库中
    BSAE.metadata.create_all()

在这里插入图片描述

数据增删查改

需要建立会话

from sqlalchemy.orm import sessionmaker
Session = sessionmaker(engine)
session = Session()

这个我使用ipython中进行练习

注意路径

在这里插入图片描述

add 是添加一条数据, add_all 添加多条数据

person = User(username='buodng', password='qwe123')
s.add(person)
s.commit()

在这里插入图片描述

在这里插入图片描述

rows = session.query(User).all()
rows = session.query(User).first()

query 就是查询的意思,在 SQLAlchemy 中也用来查询数据

all 是查询所有的意思
first 是查询第一条数据

在这里插入图片描述

update

rows = session.query(User).filter(User.username=='budong').update({User.password:1})
session.commit()

delete

rows = session.query(User).filter(User.username=='budong')[0]
print(rows)
session.delete(rows)
session.commit()

猜你喜欢

转载自blog.csdn.net/weixin_44510615/article/details/90117529