常用的数据类型
模型类
一对多
from app import db
import datetime
class BaseModel(db.Model):
__abstract__ = True
create_time = db.Column(db.DateTime,default=datetime.datetime.now())
update_time = db.Column(db.DateTime,default=datetime.datetime.now())
class Role(db.Model):
__tablename__ = 'roles'
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(64), unique=True)
users = db.relationship('User', backref='role')
class User(BaseModel):
__tablename__="user"
uid = db.Column(db.BigInteger,primary_key=True,comment="用户id")
name = db.Column(db.String(100),nullable=False,comment="姓名")
password = db.Column(db.String(255))
role_id = db.Column(db.Integer, db.ForeignKey('roles.id'))
多对多
article_tag = db.Table('article_tag',
db.Column('article_id', db.Integer, db.ForeignKey('article.id'), primary_key=True),
db.Column('tag_id', db.Integer, db.ForeignKey('tag.id'), primary_key=True)
)
class Article(db.Model):
__tablename__ = 'article'
id = db.Column(db.Integer, primary_key=True, autoincrement=True)
title = db.Column(db.String(100), nullable=False)
tags = db.relationship('Tag', secondary=article_tag, backref=db.backref('articles'))
class Tag(db.Model):
__tablename__ = 'tag'
id = db.Column(db.Integer, primary_key=True, autoincrement=True)
name = db.Column(db.String(100), nullable=False)
PYMYSQL
import pymysql
class DB:
def __init__(self) -> None:
# 主库用于写入
self.conn = pymysql.connect(host='localhost',port=3306,user='root',password='mysql',db='p2p',cursorclass=pymysql.cursors.DictCursor)
self.cursor = self.conn.cursor()
#更新添加
def update(self,sql):
self.cursor.execute(sql)
self.conn.commit()
return self.cursor.lastrowid
#获取一条
def findOne(self,sql):
self.cursor.execute(sql)
res = self.cursor.fetchone()
return res
#获取多条
def findAll(self,sql):
self.cursor.execute(sql)
res = self.cursor.fetchall()
return res
#提交方法
def commit(self):
self.conn.commit()
#回滚方法
def rollback(self):
self.conn.rollback()
db = DB()
单例模式
保证只创建一个对象,创建时先判断是否存在,如果存在直接返回,如果不存在以会new
class DB:
pass
db1 = DB()
from db import DB
db = DB()
db.find...
from db import db1
db1.find...
注册登录
orm介绍
对象关系映射,对象创建表。优点在于对sql语句进行了封装,用的时候不用关心具体的实现,在安全上解决了sql注入的问题。并且引入的缓存,对数据缓存。缺点性能上有损耗,并且对不支持复杂sql.