sqlite db.create_all()不创建数据库

u5rb5r59  于 2023-08-06  发布在  SQLite
关注(0)|答案(1)|浏览(101)

我试着做了一个程序:

from flask import Flask, render_template
import os
from datetime import datetime
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)

app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///todo.db'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
db = SQLAlchemy(app)
#db.init_app(app)

class Todo(db.Model):
    sno = db.Column(db.Integer, primary_key = True)
    title = db.Column(db.String(200), nullable = False)
    desk = db.Column(db.String(500), nullable = False)
    date_created = db.Column(db.DateTime, default = datetime.utcnow)

    def __retr__(self) -> str:
        return f"{self.sno} - {self.title}"

@app.route('/')
def hello_world():
    return render_template('index.html')

@app.route('/products')
def products():
    return 'THIS IS PRODUCTS PAGE'

if __name__ == '__main__':
    app.run(debug = True, port = 8000)

字符串
PowerShell中的Windows命令:

>>>from app import db,Todo
>>>with app.app_context():
>>>...     db.create_all()


它应该创建SQLite数据库Todo.db,但没有创建任何文件。

piwo6bdm

piwo6bdm1#

你应该在app Python文件本身中添加该代码,如:

from flask import Flask, render_template
import os
from datetime import datetime
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)

app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///todo.db'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
db = SQLAlchemy(app)
#db.init_app(app)

class Todo(db.Model):
    sno = db.Column(db.Integer, primary_key = True)
    title = db.Column(db.String(200), nullable = False)
    desk = db.Column(db.String(500), nullable = False)
    date_created = db.Column(db.DateTime, default = datetime.utcnow)

    def __retr__(self) -> str:
        return f"{self.sno} - {self.title}"

@app.route('/')
def hello_world():
    return render_template('index.html')

@app.route('/products')
def products():
    return 'THIS IS PRODUCTS PAGE'

if __name__ == '__main__':
    with app.app_context():
        db.create_all()
    app.run(debug = True, port = 8000)

字符串
然后在第一次运行后删除with语句,除非您创建了另一个模型。

相关问题