flask框架:Python 3.5下使用 flask_SqlAlchemy和mysql

本文介绍了在Python 3.5环境中使用Flask-SQLAlchemy框架操作MySQL数据库的经验。重点讲解了如何配置MySQL数据库连接,以及在ORM中定义模型。还探讨了SQLAlchemy与flask_sqlalchemy查询的区别,特别是filter和filter_by两种过滤操作的使用场景。

今天学习了一下flask_SqlAlschemy的使用,它是基于flask和SqlClchemy的对数据库进行操作的一个关系型数据库框架.内置了orm.

首先是定义模型:,注意要怎么才能配置好数据库,很多教程上都是sqlLite的,而我们需要的则是mysql,具体配置如下,因为MySQlDB不支持python3了,所以我用pymysql,这是一个纯python写的支持mysql操作的第三方库.

因为这个框架帮我们实现了orm,所以我没可以按照数据库表的结构来定义相应的接口类.

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://root:19931218@localhost/test'
app.config['SQLALCHEMY_COMMIT_ON_TEARDOWN'] = True
db = SQLAlchemy(app)
class User(db.Model):
    __tablename__ = 'user'
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(80), unique=True)
    email = db.Column(db.String(120), unique=True)

    def __init__(self, username, email):
        self.username = username
        self.email = email

    def __repr__(self):
        return '<User %r>' % self.username

****************************************************************

[0]创建表:

注意区分直接用SQLAlchemy和flask_SQLAlchemy的查询,它们是由一点区别的.

from sql_learn import db,User
import pymysql
db.create_all()#创建相应的表
#user_Susan = User(username = 'Susan',email = '6666663@qq.com')
#db.session.add(user_Susan)
#user_Susan.username = 'Susan_2'
#db.session.add(user_Susan)
#db.session.commit()
#print(db.session.query(User,User.id,User.username).all())#这里返回的是一个元组,每一个对象还是一个元组,包含User类,id,username
#print(User.query.filter_by(username = 'Susan').all())#flask的查询对象返回User的对象
user = User.query.filter_by(username = 'Susan').first()
user.username = 'Susan_wifi'
db.session.add(user)
db.session.commit()
另外filter的过滤操作有很多,具体要看文档,我简单介绍下用过的两个例子:分别是filter(过滤器)和filter_by(等值过滤器)
print(User.query.filter(User.username > 'Susan_2').first())
print(User.query.filter_by(username = 'Susan_2').first())

注意到区别了吗,filter_by只能处理等值的语句.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值