首页   注册   登录
 yuchenyang1994 最近的时间轴更新

yuchenyang1994

V2EX 第 182865 号会员,加入于 2016-07-20 14:24:28 +08:00
yuchenyang1994 最近回复了
都说的不太好,g 对象虽然可以,但是不符合 flask 的约定,虽然 flask 对这块管的毕竟宽松,但是使用扩展的约定其实是最好的
example:
```python
class Sqlite:
def __init__(self):
def __init__(self, app=None):
self.app = app
if app is not None:
self.init_app(app)

def init_app(self, app):
app.config.setdefault('SQLITE3_DATABASE', ':memory:')
app.teardown_appcontext(self.teardown)

def connect(self):
return sqlite3.connect(current_app.config['SQLITE3_DATABASE'])

def teardown(self, exception):
ctx = _app_ctx_stack.top
if hasattr(ctx, 'sqlite3_db'):
ctx.sqlite3_db.close()

@property
def connection(self):
ctx = _app_ctx_stack.top
if ctx is not None:
if not hasattr(ctx, 'sqlite3_db'):
ctx.sqlite3_db = self.connect()
return ctx.sqlite3_db

```
这里的 teardown 函数就是 flask 的应用情境的上下文,也就是说,在请求后关闭 sqlite
当然,如果在请求外的时候则:
```python
with app.app_context():
cur = db.connection.cursor()
cur.execute(...)
```
这样的好处就是在请求环境下你可以直接 import 你的 Sqlite 对象用,不需要 request.g.sqllite,初始化也是符合约定
```python
db = Sqlite()
app.init_app(db)
# OR
db = Sqlite(app)
```
90 天前
回复了 gbin 创建的主题 程序员 本命年感觉人生已经到了低谷,明年想考研
我今年也闹得很,冬至特意去了静安寺烧了个香,我也跟我谈了 3 年的女友拜拜了,反正本命年低谷倒是不算,就是闹得很
投了一份,期待~
94 天前
回复了 xiaoshu 创建的主题 酷工作 不关知乎的事,只想发个真诚的酷工作!
@xiaoshu 你好,没啥反应啊,是不是没过初筛啊?
94 天前
回复了 javaWeber 创建的主题 职场话题 请教几个投简历和面试的问题。。
先找饭吃,再谈环境
95 天前
回复了 xiaoshu 创建的主题 酷工作 不关知乎的事,只想发个真诚的酷工作!
95 天前
回复了 xiaoshu 创建的主题 酷工作 不关知乎的事,只想发个真诚的酷工作!
@xiaoshu yuchenyang1994@foxmail.com
95 天前
回复了 xiaoshu 创建的主题 酷工作 不关知乎的事,只想发个真诚的酷工作!
@xiaoshu 简历已经发邮箱了
关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2176 人在线   最高记录 4385   ·  
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.3 · 9ms · UTC 05:10 · PVG 13:10 · LAX 22:10 · JFK 01:10
♥ Do have faith in what you're doing.
沪ICP备16043287号-1