0


python3 Flask应用 使用 Flask-SQLAlchemy操作MySQL数据库

一、环境搭建

下载命令:

  1. pip install flask flask-sqlalchemy pymysql

二、创建项目结构

  1. yourProjectFolder/
  2. |—— app.py
  3. |—— config.py
  4. |—— models.py
  5. |__ mydb.py

三、基本使用

3.1 config.py 进行数据库连接配置

  1. import os
  2. basedir = os.path.abspath(os.path.dirname(__file__))
  3. class Config(object):
  4. SECRET_KEY = os.environ.get('SECRET_KEY') or 'you-will-never-guess'
  5. SQLALCHEMY_DATABASE_URI = 'mysql+pymysql://用户名:密码@数据库地址/数据库名'
  6. SQLALCHEMY_TRACK_MODIFICATIONS = False # 关闭修改跟踪,节省资源

3.2 models.py 定义数据库模型

  1. from flask_sqlalchemy import SQLAlchemy
  2. db = SQLAlchemy()
  3. class User(db.Model):
  4. __tablename__ = 'user'
  5. id = db.Column(db.BigInteger, primary_key=True, autoincrement=True, comment='主键id')
  6. username = db.Column(db.String(255), index=True, unique=True, nullable=False, comment='用户名(手机号)')
  7. password = db.Column(db.String(255), nullable=False, comment='密码')
  8. ip = db.Column(db.String(255), nullable=True, default=None, comment='注册时IP地址')
  9. ipCity = db.Column(db.String(255), nullable=True, default=None, comment='注册时的ip所在地')
  10. registerTime = db.Column(db.String(255), nullable=True, default=None, comment='注册时间')
  11. def __repr__(self):
  12. return '<User {}>'.format(self.username)

3.3 mydb.py 增删改查例子

  1. from flask import Flask
  2. from sqlalchemy.exc import SQLAlchemyError
  3. from config import Config
  4. from models import db, User
  5. app = Flask(__name__)
  6. app.config.from_object(Config)
  7. # 初始化数据库
  8. db.init_app(app)
  9. # 新增例子
  10. def insert(username, password, ip, ip_city, register_time):
  11. is_user = login_user_db(username)
  12. if is_user is not None:
  13. return 1
  14. else:
  15. with app.app_context():
  16. try:
  17. u = User(username=username, password=password, ip=ip, ipCity=ip_city, registerTime=register_time)
  18. db.session.add(u)
  19. db.session.commit()
  20. return 2
  21. except Exception as e:
  22. db.session.rollback()
  23. print(f"发生错误: {e}")
  24. return 3
  25. # 查询例子
  26. def select(username):
  27. with app.app_context():
  28. return User.query.filter_by(username=username).first()
  29. # 稍微复杂一点的查询
  30. # return User.query.filter(User.username.like('%john%')).first()
  31. # 修改例子
  32. def update(username,password):
  33. with app.app_context():
  34. try:
  35. user = User.query.filter_by(username=username).first()
  36. if user:
  37. user.password = str(password)
  38. db.session.commit()
  39. return True
  40. else:
  41. print(f"密码重置用户 {username} 没有.")
  42. return False
  43. except SQLAlchemyError as e:
  44. db.session.rollback()
  45. print(f"An error occurred: {e}")
  46. return False
  47. # 删除例子
  48. def delete(username):
  49. with app.app_context():
  50. try:
  51. # 查找用户 通过用户名
  52. user = User.query.filter_by(username=username)
  53. # .get()方法用的是主键
  54. # user = User.query.get(1)
  55. if user:
  56. db.session.delete(user) # 删除用户
  57. db.session.commit() # 提交事务
  58. return True
  59. else:
  60. print(f"没有找到用户 {username}.")
  61. return False
  62. except SQLAlchemyError as e:
  63. db.session.rollback() # 回滚事务
  64. print(f"An error occurred: {e}")
  65. return False

3.3 app.py 调用 增删该查例子

  1. import mydb
  2. mydb.update(username=username, password=password)
  3. db_user = mydb.select(username)
  4. db_user.id
  5. db_user.username
  6. db_user.password
标签: flask mysql python

本文转载自: https://blog.csdn.net/weixin_53593234/article/details/143903901
版权归原作者 小李L 所有, 如有侵权,请联系我们删除。

“python3 Flask应用 使用 Flask-SQLAlchemy操作MySQL数据库”的评论:

还没有评论