• flask-sqlalchemy连接数据库


    1、安装flask_sqlalchemy和pymysql

    pip install flask-sqlalchemy
    pip install pymysql

    2、进行配置

    使用Flask-SQLAlchemy扩展操作数据库,首先需要通过URL建立数据库连接,必须保存到Flask配置对象的SQLALCHEMY_DATABASE_URI中。

    1. HOSTNAME = '127.0.0.1'
    2. PORT = '3306'
    3. DATABASE = 'flask_test'
    4. USERNAME = 'root'
    5. PASSWORD = 'root'
    6. DB_URI = 'mysql+pymysql://{}:{}@{}:{}/{}?charset=utf8'.format(USERNAME,PASSWORD,HOSTNAME,PORT,DATABASE)
    7. app.config['SQLALCHEMY_DATABASE_URI'] = DB_URI

    其中HOSTNAME为路由地址

    PORT为端口号,我在创建数据库时没有更改,所以用的默认的3306端口号

    DATABASE为数据库名字

    后面两个参数为数据库用户名和密码

    3、创建SQLALchemy实例

    db = SQLAlchemy(app)

    我这里创建的实例记为db

    4、创建ORM类

    创建这个类必须继承db.Model !!!

    1. class Article(db.Model):
    2. __tablename__ = "article"
    3. id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    4. title = db.Column(db.String(200), nullable=False)
    5. content = db.Column(db.Text, nullable=False)

    第二行设置数据库表名为article。第三行设置id项,将其设置为整数项,并且设置为主键以及自动增长。第四行设置title项,将其设置为含200个字符的字符串,并设置不能非空。第五行设置content项,将其设置为db.Text格式并且设置不能非空。

    5、创建表

    db.create_all()

    然后就会发现,数据库中多出一张表:

    当然,这张表目前还是空的

     6、在表中增删查改数据

     我们可以在一个视图函数中执行这些操作,当然也可以直接执行

    1. @app.route("/article")
    2. def article_view():
    3. # 添加数据
    4. article = Article(title="钢铁是怎样炼成的", content="xxx")
    5. db.session.add(article)
    6. db.session.commit()
    7. # # 查询数据
    8. # article = Article.query.filter_by(id=1)[0]
    9. # print(article.title)
    10. #
    11. # # 修改数据
    12. # article = Article.query.filter_by(id=1)[0]
    13. # article.content = "yyy"
    14. # db.session.commit()
    15. #
    16. # # 删除数据
    17. # article = Article.query.filter_by(id=1)[0]
    18. # db.session.delete(article)
    19. # db.session.commit()
    20. return "数据操作成功"

    添加数据时没加id,是因为我们之前设置id的autoincrement为True,于是它会自动增加。 

    执行完发现数据库中多出了如下: 

    其他三步结果请自行查看。当然,如果想观察每一步的结果,在执行添加数据前最好最好先将其他三步加上注释,对于其他三步也是一样。

  • 相关阅读:
    数据可视化【原创】vue+arcgis+threejs 实现立体光圈闪烁效果
    redis的key超时策略和key淘汰机制(面试题详解)
    天猫精灵、Blinker 控制esp32自带灯熄灭---Micropython版本
    stl_stack_queue的使用及OJ题
    可视化音视频分析工具:好用工具大集锦,快转发给你兄弟看看丨音视频工具
    C++智能指针[上]
    多大的串扰算大?
    Spring组件注入注意事项之一
    css 自定义虚线
    跑通官方的yolov7-tiny实验记录(yolov7-tiny可作为yolov5s的对比实验网络)
  • 原文地址:https://blog.csdn.net/qq_55621259/article/details/126661725