美文网首页Flask交流
九、Flask-SQLAlchemy数据的增删改查

九、Flask-SQLAlchemy数据的增删改查

作者: 十柒年 | 来源:发表于2018-09-05 17:47 被阅读55次

    1.用Flask-SQLAlchemy操作数据库

    上篇文章创建好了SQLAlchemy与MySQL的映射,这篇文章就来研究下如何用SQLAlchemy来进行数据的增删改查。

    1.增加

        article1 = Article(title='aaa', content='bbb')
        db.session.add(article1)
        db.session.commit()
    

    增加比较简单,db就是SQLAlchemy的一个对象,db里面有一个session,这个session在python里面指的是会话,不是咱们常说的session缓存,变量。先创建好一条Article的记录,添加好db.session里,然后提交就可以了。

    2.查询

        result = Article.query.filter(Article.title == 'aaa').first()
        print(result.title)
        print(result.content)
    

    注意查询出来的结果是一个列表形式的,.first() 是指取查询出来的第一条记录,如果没有记录,返回为空。

    3.修改

        article1 = Article.query.filter(Article.title == 'aaa').first()
        article1.title = 'new title'
        db.session.commit()
    

    想要对数据进行修改,需要先查询到该条记录,在对该条记录进行更新,然后提交。

    4.删除

        article1 = Article.query.filter(Article.content == 'bbb').first()
        db.session.delete(article1)
        db.session.commit()
    

    删除也比较简单,查询到对应的记录,然后执行db.session.delete,添加到会话中,然后commit()提交就行了。
    请看完整代码,app.py

    # encoding: utf-8
    from flask import Flask
    from flask_sqlalchemy import SQLAlchemy
    import config
    
    app = Flask(__name__)
    app.config.from_object(config)
    db = SQLAlchemy(app)
    
    class Article(db.Model):
        __tablename__ = 'article'
        id = db.Column(db.INTEGER, primary_key=True, autoincrement=True)
        title = db.Column(db.String(100), nullable=False)
        content = db.Column(db.Text, nullable=False)
    
    db.create_all()
    
    @app.route('/')
    def hello_world():
        # 增加
        # article1 = Article(title='aaa', content='bbb')
        # db.session.add(article1)
        # db.session.commit()
    
        # 查询
        # result = Article.query.filter(Article.title == 'aaa').first()
        # article1 = result[0]
        # print(article1.title)
        # print(article1.content)
    
        # 修改
        # article1 = Article.query.filter(Article.title == 'aaa').first()
        # article1.title = 'new title'
        # db.session.commit()
    
        # 删除
        article1 = Article.query.filter(Article.content == 'bbb').first()
        db.session.delete(article1)
        db.session.commit()
        return 'Hello World!'
    
    
    if __name__ == '__main__':
        app.run()
    

    config.py

    # encoding: utf-8
    # dialect+driver://username:password@host:port/database
    DIALECT = 'mysql'  # 要用的什么数据库
    DRIVER = 'pymysql' # 连接数据库驱动
    USERNAME = 'root'  # 用户名
    PASSWORD ='root'  # 密码
    HOST = 'localhost'  # 服务器
    PORT ='3306' # 端口
    DATABASE = 'db_demo2' # 数据库名
    
    SQLALCHEMY_DATABASE_URI = "{}+{}://{}:{}@{}:{}/{}?charset=utf8".format(DIALECT, DRIVER, USERNAME, PASSWORD, HOST, PORT, DATABASE)
    SQLALCHEMY_TRACK_MODIFICATIONS = False
    

    Study hard and make progress every day

    更多学习资料请关注"爱游戏爱编程"。


    爱游戏爱编程.jpg

    相关文章

      网友评论

        本文标题:九、Flask-SQLAlchemy数据的增删改查

        本文链接:https://www.haomeiwen.com/subject/pmfzwftx.html