当前位置:   article > 正文

python Flask 09 Flask基于DBUtils, sqlobject, SQLAlchemy实现数据库连接池_sqlalchemy_commit_teardown

sqlalchemy_commit_teardown

Flask连接数据库可以使用如下三种方式 :

Python DBUtils 提供了稳固的、持久的到数据库的连接池,支持多线程应用环境。参见

SQLObject 是一个流行的Python 数据库对象映射框架,映射的规则就是表->类、字段->属性

SQLAlchemy 是一个Python 的SQL 工具包以及数据库对象映射框架, 是三个数据库框架中功能最全的

一般而言,还是喜欢SQLAlchemy的连接数据库的代码,另外SQLAlchemy也是三个数据库框架中功能最全的,如果只是实现简单的数据库连接池,那么就用dbutils,如果使用ORM,那还是用SQLAlchemy;sqlobject就略过了。

DBUtils 连接数据库

SQLAlchemy连接数据库

本内容参考 Flask使用MySql数据库

也可以参考 Flask最强攻略 - 跟DragonFire学Flask - 第十四篇 Flask-SQLAlchemy

环境说明

Centos7 + python3.6 + mysql5.7

1.安装Flask-SQLAlchemy,pymyql驱动

  1. pip install flask-sqlalchemy
  2. pip intall pymysql

2.使用Flask-SQLAlchemy

Flask-SQLAlchemy数据库URL
常用的数据库引擎:

数据库引擎URL
MySqlmysql+pymysql://username:password@host/database
Postgrespostgresql://username:password@host/database
SQLitesqlite:绝对路径/database

app.py编辑

  1. #导入模块
  2. from flask_sqlalchemy import SQLAlchemy
  3. import pymysql
  4. #创建flask对象
  5. app = Flask(__name__)
  6. #配置flask配置对象中键:SQLALCHEMY_DATABASE_URI
  7. app.config['SQLALCHEMY_DATABASE_URI'] = "mysql+pymysql://username:password@hostname/database"
  8. #配置flask配置对象中键:SQLALCHEMY_COMMIT_TEARDOWN,设置为True,应用会自动在每次请求结束后提交数据库中变动
  9. app.config['SQLALCHEMY_COMMIT_TEARDOWN'] = Ture
  10. app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True
  11. app.config['SQLALCHEMY_COMMIT_ON_TEARDOWN'] = True
  12. #获取SQLAlchemy实例对象,接下来就可以使用对象调用数据
  13. db = SQLAlchemy(app)

3.sqlalchemy列常见参数

选择项说明
autoincrementTrue 是否自增
primary_keyTrue 是否是主键
indexETRUE 是否是索引
uniqueTrue 是否是唯一
nullableTrue 是否允许字段为空
default默认值

4.字段类型

类型名称python类型描述
Integerint常规整型,通常为32位
SmallIntegerint短整型,通常为16位
BigIntegerint或long精度不受限整型
Floatfloat浮点型
Numericdecimal定点数
Stringstr可变长度字符串
Textstr可变长度字符串,适合大量文本
Unicodeunicode可变长度Unicode字符串
Booleanbool布尔值
Datedatetime.date日期类型
Timedatetime.time时间类型
DateTimedatetime.datetime日期时间类型
Intervaldatetime.timedate时间间隔
Enumstr字符列表
PickleType任意Python对象自动Pickle序列化
LargeBinarystr二进制

5.query对象

query对象是sqlalchemy中的专门用于查询相关操作的对象,主要分为执行函数和过滤函数

  • 执行函数如下:
  1. all()
  2. first()
  3. first_or_404()
  4. get()
  5. get_or_404()
  6. count()
  7. paginate()
  • 过滤函数
  1. filter()
  2. filter_by()
  3. limit()
  4. offset()
  5. order_by()
  6. group_by()

6.使用sqlalchemy

  1. from app import db
  2. #创建模型对象
  3. class User(db.Model):
  4. __tablename__ = 'user' # 数据库中的表名
  5. id = db.Column(db.Integer, primary_key=True)
  6. username = db.Column(db.String(80), unique=True, nullable=False)
  7. email = db.Column(db.String(120), unique=True, nullable=False)
  8. def __repr__(self):
  9. return '<User %r>' % self.username
  10. # 1.创建表
  11. db.create_all()
  12. # 2.增加记录
  13. admin = User(username='admin', email='admin@example.com')
  14. guest = User(username='guest', email='guest@example.com')
  15. db.session.add(admin)
  16. db.session.add(guest)
  17. db.session.commit()
  18. #3.查询记录,注意查询返回对象,如果查询不到返回None
  19. User.query.all() #查询所有
  20. User.query.filter_by(username='admin').first()#条件查询
  21. User.query.order_by(User.username).all()#排序查询
  22. User.query.limit(1).all()#查询1
  23. User.query.get(id = 123)#精确查询
  24. # 4.删除
  25. user = User.query.get(id = 123)
  26. db.session.delete(user)
  27. db.session.commit()
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/496588
推荐阅读
相关标签
  

闽ICP备14008679号