数据表的增删改查(在flask_sqlalchemy 下进行)
可参考之前文章:python元类
# 数据表 的增删改查
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://root:root@localhost:3306/flask_demo?charset=utf8'
# app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///users.db' # 采用 sqlite3 内存数据库方式
db = SQLAlchemy(app)
class User(db.Model):
__tablename__ = 'user_demo' #表名
# 列名 = 值
id = db.Column(db.Integer, primary_key=True, autoincrement=True) # primary_key 主键 autoincrement 自动增长
username = db.Column(db.String(64), unique=True, index=True) # unique 不唯一
# password = db.Column(db.String(64), unique=False)
password = db.Column(db.String(64))
def __repr__(self):
return f'{self.__class__.__name__}:{self.__tablename__}'
def createTables():
"""
创建 所有表结构
:return:
"""
db.create_all()
return '数据表创建成功'
# 向数据表插入一条数据
def insertOne(tabObj, username):
"""
向数据表插入一条数据; tabObj 数据表对象
:param tabObj:
:param username:
:return:
"""
db.session.add(tabObj)
db.session.commit()
print(f'用户:{username}数据插入成功')
# 删除一条数据
def deleteOne(tabObj, username):
"""
向数据表删除一条数据; tabObj 数据表对象
:param tabObj:
:param username:
:return:
"""
tabObj.query.filter_by(username=username).delete()
return f'用户: {username} 信息删除成功'
# 修改一条数据
def updateOne(tabName, colName, newVal, oldVal):
"""
向数据表修改一条数据; tabObj 数据表对象
:param tabObj:
:return:
"""
# user = tabObj.query.get(1)
# print(user.username)
# user.username = 'xiaoli'
# db.session.commit()
# UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值
sql = f'update {tabName} set {colName}="{newVal}" where {colName}="{oldVal}"'
db.session.execute(sql) #执行后, 无返回值
# 查询一条数据
def select(tabName, id):
sql = f'select * from {tabName} where id={id}'
# 返回一个列表对象
result = list(db.session.execute(sql))
# return result[0][1]
return result
if __name__ == '__main__':
# print(createTables())
# for i in range(1, 11):
# username = f'xiaoli{i}'
# user = User(username=username, password='666')
# insertOne(user, username)
# updateOne('user_demo', 'username', 'xiaoli10', 'xiaoli11')
print(select('user_demo', 6))