flask_sqlalchemy 创建数据库里面没有任何数据?

本人第一次使用flask_sqlalchemy, 遇到了一点问题, 如下

使用的python版本为3.6, 使用conda作为包管理器, 并且已经成功安装了flask_sqlalchemy等相关依赖包.

项目简单目录如下:

app.py
db/
models/
    __init__.py
    todo.py
routes/
    __init__.py
    todo.py
static/
templates/

app.py文件内容如下:

# app.py

from flask import (
    Flask,
)
from flask_sqlalchemy import SQLAlchemy
import os
from utils import random_str


app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:////' + os.path.join(app.root_path, 'db', 'data.sqlite')
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False

app.secret_key = random_str()

db = SQLAlchemy(app)

# 省略了一些无关代码

models/todo.py 文件如下

# models/todo.py

import time
from app import db

class Todo(db.Model):

    id = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.String(20))
    completed = db.Column(db.Boolean, default=False)
    ct = db.Column(db.Integer, default=int(time.time()))

    def __init__(self, form):
        self.title = form.get('title', '')
        self.completed = False
        self.ct = int(time.time())

操作如下
由于我使用的是conda, 我在终端先激活环境, 然后打开 flask shell:

# 我的 conda 环境叫 flask
$ source activate flask
(flask) $ flask shell

显示如下:

Python 3.6.8 |Anaconda, Inc.| (default, Dec 29 2018, 19:04:46) 
[GCC 4.2.1 Compatible Clang 4.0.1 (tags/RELEASE_401/final)] on darwin
App: app [production]
Instance: xxx/instance
>>>

然后我在flask shell执行如下命令:

>>> from app import db
>>> db.create_all()

问题如下:
此时查看文件目录发现在models/下面存在data.sqlite文件, 但是该文件里面没有任何内容, 显示大小为0 byte, 以及我使用数据库管理软件查看发现里面没有任何表任何数据, 同时如果我继续执行db.drop_all无法删除该数据库文件.

请问这种情况如何解决, 我谷歌了一下没有找到答案, 望能有前辈指点, 不胜感激.

Cats萌萌
浏览 1026回答 2
2回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python