SQL Alchemy 未创建数据库

问题描述 投票:0回答:1

我正在学习使用 Flask 和 SQL Alchemy 的 CRUD 教程。

在本教程中,当他运行此代码时,它会创建一个名为“instance”的文件夹,其中包含 .db 文件。

当我执行相同操作时,会创建文件夹但不会创建文件。我一遍又一遍地检查了这段代码,它与他的一致,所以我找不到它不起作用的原因。

#Imports 
from flask import Flask, render_template
from flask_scss import Scss
from flask_sqlalchemy import SQLAlchemy
from datetime import datetime
import os 

#App
app = Flask(__name__)
Scss(app)

app.config['SQLALCHEMY_DATABASE_URI'] ='sqlite:///database.db'
db = SQLAlchemy(app)

#Data Class
class Task(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    content = db.Column(db.String(length=100), 
    nullable=False)
    complete = db.Column(db.Integer, default=0)
    created = db.Column(db.DateTime, default=datetime.now())

    def __repr__(self) -> str:
        return f"Task {self.id}"


#Routes
@app.route("/")
def index():
    return render_template("index.html")


#Runner
if __name__ in "__main__":
    with app.app_context():
        db.create_all()

    app.run(debug=True)

感谢帮助!

python flask flask-sqlalchemy
1个回答
0
投票

自己在windows上尝试了一下,运行完美。由于它可以创建文件夹,我猜测这要么是创建 .db 文件的权限问题:

  • 在 Linux 上执行
    chmod -R 777 app_directory_name
  • 在 Windows 上尝试将其放在文档文件夹之类的位置

或具有相对路径的东西:
尝试将这一行包含在

app.app_context()

if __name__ in "__main__":
    with app.app_context():
        print(db.engines)

并检查打印的路径是否正确

如果两者都不起作用,请尝试创建一个新的虚拟环境(

python -m venv venv
)或尝试不同的操作系统。

© www.soinside.com 2019 - 2024. All rights reserved.