Flask交流

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

2018-09-05  本文已影响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
上一篇下一篇

猜你喜欢

热点阅读