Python tornado 数据库操作方法

提示:本文中的代码缩进有问题,请自行更正后运行。


一、数据库初始化

1、创建连接

#文件名connect.py

from sqlalchemy import create_engine
 
HOSTNAME = '127.0.0.1'
PORT = '3306'
DATABASE = 'mydb'
USERNAME = 'admin'
PASSWORD = 'Root110qwe'
 
db_url = 'mysql+pymysql://{}:{}@{}/{}?charset=utf8'.format(USERNAME,PASSWORD,HOSTNAME,DATABASE)
engine = create_engine(db_url)


2、创建映像

from sqlalchemy.ext.declarative import declarative_base

Base = declarative_base(engine)

 

3、创建会话

from sqlalchemy.orm import sessionmaker

Session = sessionmaker(engine)

session = Session()

 

二、创建模型

user_modules.py

1、新建文件,引入数据库初始数据

from datetime import datetime

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

from connect import Base,session

 

2、继承Base,创建数据表模型

#接上面 user_modules.py
class User(Base):
    __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)
    _locked = Column(Boolean,default=False,nullable=False)
 
    def __repr__(self):#返回原生记录
        return ""%(
            self.id,self.username,self.password,self.creatime,self._locked)
 
if __name__=='__main__':
 Base.metadata.create_all()#将继承过Base的类,创建数据表模型


#进阶内容
    @classmethod#类方法
    def all(cls):
        return session.query(cls).all()
 
    @classmethod
    def by_id(cls, id):
        return session.query(cls).filter_by(id=id).all()
 
    @classmethod
    def by_name(cls, name):
        return session.query(cls).filter_by(username=name).all()
 
    @property#类属性
    def locked(self):
        return self._locked


三、数据操作(增、删、改、查)

test_user_modules.py
from user_modules import User,session#引入数据模型
 
def add_user():#增加记录
    person = User(username='wawa',password='qwe123')#实例用户表模型
    session.add(person)#会话添加单条记录
    #session.add_all([User(username='wgn4',password='qwe123'),
    User(username='wgn5', password='qwe123')])#支持列表
    session.commit()#执行
 
def search_user():#查询内容
    #row = session.query(User).all()
    row = session.query(User).filter_by(id=1).all()
    print(row[0].username)#[0]代表第一行数据
    print(row)#使用user_modules.py当是 def __repr__(self)函数返回的格式,如果没有这个函数返回的是对象
row = session.query(User).filter_by(username='wgn')
print(row.all())
print(row.count())#取消all()可以得到行数
    print(row)
    print(row[0].locked)#使用了类属性
 
def delete_user():
    row = session.query(User).filter_by(username='wgn53')  
    if row.count() == 1:# 删除符合条件的一行记录
        session.delete(row[0])
        session.commit()
    elif row.count() > 1:# 删除符合条件的多行记录
        row.delete()
        session.commit()
 
def update_user():#修改数据(更新)
    session.query(User).filter_by(username='wgn').update({User.password: 'abc8881', User._locked: 'Ture'})
    session.commit()
 
if __name__=='__main__':
add_user()


你可能感兴趣的:(Python tornado 数据库操作方法)