flask mysql sqlalchemy教程

1.建立models_base文件

连接数据库

复制代码
import logging
import ast
import simplejson as json
import time
from flask_sqlalchemy import SQLAlchemy
from flask import Flask

from commons.entity import rds_mongo

app = Flask(__name__)

app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://root:1234@localhost:3306/flask_demo'

app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True
db = SQLAlchemy(app)

logger = logging.getLogger("platform")
复制代码

 

2.建立数据库

复制代码
class UserInfo(DynamicDocument):
    # Columns

    __tablename__ = 'userinfo'

    uid = Column(String(64), primary_key=True)
    nick_name = Column(String(64))
    sex = Column(String(64))
    email = Column(String(64))
    device_id = Column(String(100))
    imei = Column(String(100))
    coin_balance = Column(Integer())  # 金币余额
    real_name = Column(String(100))  # 真名
    id_card = Column(String(100))  # 身份证号
    create_time = Column(String(100))  # 创建时间
    last_login_time = Column(String(100), nullable=True)  # 创建时间
    cash = Column(Float())  # # 现金账户
    other_column = Column(Text(), nullable=True)

    def __init__(self, coin_balance=0, lx_login=1, lj_login=1, *args, **kwargs):
        super(UserInfo, self).__init__(*args, **kwargs)
        self.uid = uid_value_decorator(random.randint(0, 9))
        self.coin_balance = coin_balance
        self.lx_login = lx_login  # 连续登陆的天数
        self.lj_login = lj_login  # 累计登陆的天数
复制代码

 

3.常用字段类型

常用列选项

  

关系选项

 

 

4.基本查询

复制代码
# 查询所有
def checkAll():
    user =UserInfo.query.all()
    print(user)


# 修改数据
def update(name, pwd):
    user = User.query.filter(User.name == name).first()
    if user is not None:
        user.thrust = pwd
        db.session.commit()
        print('修改 用户 %s ,密码为:%s' % (name, pwd))
    else:
        print('用户不存在')


# 删除数据
def delete(name, pwd):
    user = User.query.filter(User.name == name, User.thrust == pwd).first()
    if user is not None:
        db.session.delete(user)
        db.session.commit()
        print('删除 用户 %s ,密码为:%s' % (name, pwd))
    else:
        print('用户不存在,或密码不正确')

from models  import User
#添加数据
user=UserInfo(1,'xiaoxiao','ss123')
user.save()
#按条件查询
result=User.query.filter(User.id>5).all()
result=User.query.filter(User.username=='xiaoxiao').all() #返回结果为一个列表,列表内元素为User对象,all()为返回查询的所有结果,first()返回查询结果中的第一个
result=User.query.filter(User.username.startswith('x'))  #starstwith以什么开头
#获取查询结果的总数量
count=User.query.filter(User.id>5).count()
#获取查询结果中指定的数据
result=User.query.filter(User.id>5).all()[1:3]  #查询结果以列表返回,所以可以根据列表的切片操作来获取对应数据

#多条件查询
#sqlalchemy内置了多条件查询方法 : and_(), or()_ ,not_()
result=User.query.filter(and_(User.id>5,User.username.startswith('x'))) #查询id大于5并且用户名以x开头的
result=User.query.filter(or_(User.id>5,User.username.startswith('x'))) #查询id大于5或者用户名以x开头的
result=User.query.filter(and_(User.username.startswith('x'))) #查询用户名不是以x开头的


#修改
result=User.query.filter(User.username=='xiaoxiao').all()[0]
result.password='000000'
db.session.commit()

#删除
result=User.query.filter(User.username=='xiaoxiao').all()[0]
db.session.delete(result)
db.session.commit()
复制代码

 

posted on   星河赵  阅读(1692)  评论(0编辑  收藏  举报

编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
历史上的今天:
2018-03-23 Python获取时间范围内日期列表和周列表的函数
2018-03-23 python 集合比较(交集、并集,差集)集合方法大全

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示