4.Flask-SQLAlchemy
来源:互联网 发布:布料裁剪软件 编辑:程序博客网 时间:2024/06/04 19:18
Flask-SQLAlchemy
本章完成以下内容:
- 最小的应用
- 配置项
- Models
因为 SQLAlchemy 是一个常用的数据库抽象层和数据库关系映射包(ORM),并且需要一点点设置才可以使用,因此存在一个 Flask 扩展帮助您操作它。如果您想要快速开始使用,那么我们建议您使用这种方法。
一、最小的应用
from flask import Flaskfrom flask\_sqlalchemy import SQLAlchemyapp = Flask(\_\_name\_\_)app.config['SQLALCHEMY\_DATABASE\_URI'] = 'sqlite:////tmp/test.db'db = SQLAlchemy(app)class User(db.Model): 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
初始化数据库: db.create\_all()
增加一些数据:
admin = User('admin', 'admin@example.com')guest = User('guest', 'guest@example.com')db.session.add(admin)db.session.add(guest)db.session.commit()
访问数据:
users = User.query.all() # 访问所有的数据 admin = User.query.filter\_by(username='admin').first() # 访问特定的数据
外键关系:
from datetime import datetimeclass Post(db.Model): id = db.Column(db.Integer, primary\_key=True) title = db.Column(db.String(80)) body = db.Column(db.Text) pub\_date = db.Column(db.DateTime) category\_id = db.Column(db.Integer, db.ForeignKey('category.id')) category = db.relationship('Category', backref=db.backref('posts', lazy='dynamic')) def \_\_init\_\_(self, title, body, category, pub\_date=None): self.title = title self.body = body if pub\_date is None: pub\_date = datetime.utcnow() self.pub\_date = pub\_date self.category = category def \_\_repr\_\_(self): return '<Post %r>' % self.titleclass Category(db.Model): id = db.Column(db.Integer, primary\_key=True) name = db.Column(db.String(50)) def \_\_init\_\_(self, name): self.name = name def \_\_repr\_\_(self): return '<Category %r>' % self.name# 使用的时候这样py = Category('Python')p = Post('Hello Python!', 'Python is pretty cool', py)db.session.add(py)db.session.add(p)
二、配置项
SQLALCHEMY_DATABASE_URI
The database URI that should be used for the connection. Examples:
sqlite:////tmp/test.db or mysql://username:password@server/dbSQLALCHEMY_BINDS
A dictionary that maps bind keys to SQLAlchemy connection URIs. For more information about binds see Multiple Databases with Binds.SQLALCHEMY_ECHO
If set to True SQLAlchemy will log all the statements issued to stderr which can be useful for debugging.SQLALCHEMY_RECORD_QUERIES
Can be used to explicitly disable or enable query recording. Query recording automatically happens in debug or testing mode. See get_debug_queries() for more information.SQLALCHEMY_NATIVE_UNICODE
Can be used to explicitly disable native unicode support. This is required for some database adapters (like PostgreSQL on some Ubuntu versions) when used with improper database defaults that specify encoding-less databases.SQLALCHEMY_POOL_SIZE
The size of the database pool. Defaults to the engine’s default (usually 5)SQLALCHEMY_POOL_TIMEOUT
Specifies the connection timeout for the pool. Defaults to 10.SQLALCHEMY_POOL_RECYCLE
Number of seconds after which a connection is automatically recycled. This is required for MySQL, which removes connections after 8 hours idle by default. Note that Flask-SQLAlchemy automatically sets this to 2 hours if MySQL is used.SQLALCHEMY_MAX_OVERFLOW
Controls the number of connections that can be created after the pool reached its maximum size. When those additional connections are returned to the pool, they are disconnected and discarded.SQLALCHEMY_TRACK_MODIFICATIONS
If set to True, Flask-SQLAlchemy will track modifications of objects and emit signals. The default is None, which enables tracking but issues a warning that it will be disabled by default in the future. This requires extra memory and should be disabled if not needed.
URL的格式 dialect+driver://username:password@host:port/database
Ex:
- Postgres:
postgresql://scott:tiger@localhost/mydatabase
- MySQL:
mysql://scott:tiger@localhost/mydatabase
- Oracle:
oracle://scott:tiger@127.0.0.1:1521/sidname
- SQLite (note the four leading slashes):
sqlite:////absolute/path/to/foo.db
三、Models
常见API查询
- 4.Flask-SQLAlchemy
- 【Flask】Flask和SQLAlchemy:init_app
- Flask-SQLAlchemy 学习
- Flask-SQLALchemy学习笔记
- Flask-SQLAlchemy管理数据库
- Flask sqlalchemy操作数据库
- flask-sqlalchemy(1)
- flask-sqlalchemy实例
- Flask-SQLAlchemy 快速入门
- flask-sqlalchemy 简单笔记
- flask-sqlalchemy 实例代码
- flask sqlalchemy(一)
- flask sqlalchemy(二)
- Flask-SQLAlchemy使用方式
- flask SQLAlchemy 数据库操作
- Flask-SQLAlchemy 学习总结
- flask 与SQLAlchemy
- Flask+SQLAlchemy入门使用
- C#控制台基础 使用split分离字符串出现了很多的空,怎么除去空
- 缓存淘汰算法--LRU算法
- Nginx使用
- Bottle.py的教程翻译(一)——安装
- 时间格式转换
- 4.Flask-SQLAlchemy
- dede - 列表页显示
- 【转载】MyISAM 和 InnoDB 的区别
- iOS--多线程GCD--05
- 第二周项目二 函数参数传递的三种方式
- C#解析XML
- 关于ArcGIS Xamarin.Android下的 Binding库Error inflating class com.esri.android.map.MapView异常
- javaScript:倒计时设计
- 利用部分类快速调试WebService