运行SQLAlchemy代码时,我没有获得数据库文件

2024-03-28 16:43:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我正试图在我的flask项目中创建一个数据库。运行此代码时,我没有收到任何错误。但是我应该在我的目录中得到一个.db文件。我不知道。有什么想法吗?:)

from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from os import path

db = SQLAlchemy()
DB_NAME = "database.db"

def create_app():
    app = Flask(__name__)
    app.config['SECRET_KEY'] = 'key123'
    app.config['SQLALCHEMY_DATABASE_URI'] = f'sqlite:///{DB_NAME}'
    db.init_app(app)
    return app

def create_database(app):
    if not path.exists('website/' + DB_NAME):
        db.create_all(app=app)

Tags: pathnamefromimportconfigappflaskdb
1条回答
网友
1楼 · 发布于 2024-03-28 16:43:09

您的DB_URI不是一个路径,而是一个protocol string,它指示您的程序如何连接到数据库

看起来您正在尝试连接到数据库,如果数据库不存在,请创建它。下面是我将如何做的:

# I'd suggest working with sqlite directly
import sqlite3

def test_or_create_database(DB_NAME):
    """Try connecting to your database, if the db doesn't exist, create it"""
    
    DB_URI = f'sqlite:///{DB_NAME}'

    try:
        conn = sqlite3.connect(DB_URI)
        conn.cursor()
    
     # Something went wrong
     # You can try to catch the error and fix, or break
     except Exception as exc:
        print(exc)


#           
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from os import path


db = SQLAlchemy()
DB_NAME = "database.db"

def create_app():

    # Consider running your test or create db before anything:
    test_or_create_database(DB_NAME)

    app = Flask(__name__)
    app.config['SECRET_KEY'] = 'key123'
    app.config['SQLALCHEMY_DATABASE_URI'] = f'sqlite:///{DB_NAME}'
    db.init_app(app)    
    return app

相关问题 更多 >