선생님 pybo.db 가 생기지 않습니다 도와주세요 ㅠㅠ

올해초에도 같은 부분에서 못넘어가고 포기한적이 있는데
다시 시도해도 여기서 문제가 되네요
해결할수 있게 도와주시면 정말 감사하겠습니다

코드 오타는 몇번이고 봐서 오타는 없는게 맞는거 같습니다.
그럼 코드내용 첨부합니다.

예전에는 자꾸 여쭤보는게 너무 죄송해서, 그냥 넘어갔는데
이번에는 해결하고 진도 나가고 싶어서 자세하게 첨부합니다.

주석부분이 문제일수도 있겠다 싶어서, 제가 주석 달은 내용도 전부 똑같이 복사하여 올립니다.)

init.py 코드내용

from flask import Flask
from flask_migrate import Migrate
from flask_sqlalchemy import SQLAlchemy


import config

db = SQLAlchemy()
migrate = Migrate()


def create_app():    # create_app 함수가 > 애플리케이션 팩토리
    app = Flask(__name__)

    app.config.from_object(config)  # config.py 파일에 작성한 항목을> app.config 환경 변수로 부르기 위해 추가한 코드

    # ORM
    db.init_app(app)    # db를 init_app 메서드를 이용해서 초기화
    migrate.init_app(app, db)   # migrate를 init_app 메서드를 이요해서 초기화

        # db 객체를 crate_app() 함수 안에서 생성하면, 블루프린트와같은 다른 모듈에서 불러올수 없다
        # create_app 함수 밖에서 생성하고, 
        # 실제 초기화는 create_app  함수에서 수행한다
        # 플라스크는 >> 이러한 패턴을 자주 사용    

    ''' orm을 사용할 준비가 되엇으니 "flask db init" 명령으로 데이터 베이스를 초기화 '''
        # >> 터미널창에서 실행하는거야!
        # 이명령은 "데이터 베이스를 관리하는 초기 파일들"을 
        # migrations 라는 디렉터리에 자동으로 생성해 >> 이 파일들은 Flask-Migrate 라이브러리에서 사용

    from . import models
    ''' 데이터 베이스 변경을 위한 리비전 파일 생성하기'''
        # >> 터미널에서 > flask db migrate >> 기억해야 할것중하나네
        # 리비전 파일생성됨  C:\projects\myproject\migrations\versions\882fd9308d52_.py
        # 리비전 파일 => 데이터 베이스 변경을 처리할 > 리비전 파일
        # 리비전(revision) 이란> 생성된 882fd9308d52_.py 파일명에서 > 882fd9308d52_ 을 가르킴
        # flask db migrate 명령을 수행할때 >> 무작위로 만들어진다.

    ''' 데이터 베이스 갱신하기 '''
        # flask db upgrade 명령으로 리비전 파일 > 실행
            ### 이과정에서 question과 answer 테이블이 생성됨



    # 블루 프린트
    from .views import main_views
    app.register_blueprint(main_views.bp)

        # ## app객체를 전역으로 사용하면 문제생길수 있음 => 애플리케이션 팩토리로 해결
        # @app.route('/')     # 특정 주소에 접속하면, 바로 다음 줄에 있는 함수를 호출
        # def hell_pybo():
        #     return "Hello, Pybo!"

    return app

models.py 코드 내용

# db 모델 클래스 models.py

from pybo import db

class Question(db.Model):   # question 이라는 테이블 생성됨 
    ''' 
        질문모델
        모든 모델의 기본 클래스 : db.Model 
    '''
    id = db.Column(db.Integer, primary_key=True)    # db.Column 클래스를 사용해서 생성
    subject = db.Column(db.String(200), nullable=False)
    content = db.Column(db.Text(), nullable=False)
    create_date = db.Column(db.DateTime(), nullable=False)


class Answer(db.Model):     # 데이터 베이스에 모델이름과 똑같은 answer 라는 이름의 테이블 생성됨
    ''' 
        답변 모델 
        모든 모델의 기본 클래스 : db.Model를 상속받음 
    '''
    id = db.Column(db.Integer, primary_key=True)
    question_id = db.Column(db.Integer, db.ForeignKey('question.id', ondelete='CASCADE'))    
    ### 질문 모델과 연결하려고 추가 
    #### question.id >> Question 테이블의 id 속성 
    # 실제 전달 되는값은 : 테이블명.컬럼명.
    # 질문을 삭제하면 해당 답변도 삭제 된다 : ondelete="CASCADE"

    question = db.relationship('Question', backref=db.backref('answer_set', cascade='all, delete-orphan'))
    ## 연결은 외부키 Foreign_Key  <> 참조는 relationship
    # backref = 역참조설정
    # 역참조: 질문에서, 답변을 참조하는것. >> 질문에 달린 답변을 >> 참조하네 ㄷㄷ
    # 질문에 해당하는 객체가 a_question이라면 a_question.answer_set으로, 질문에 달린 답변을 참조할 수 있다.
    # 질문데이터 삭제할때, 답변데이터 모두 삭제하려면 cascade='all, delete-orphan' 옵션추가
    # question = db.relationship('Question', backref=db.backref('answer_set', cascade='all, delete-orphan'))

    content = db.Column(db.Text(), nullable=False)
    create_date = db.Column(db.DateTime(), nullable=False)


config.py 코드내용

import os

BASE_DIR = os.path.dirname(__file__)
SQLAlCHEMY_DATABASE_URI = 'sqlite:///{}'.format(os.path.join(BASE_DIR, 'pybo.db'))    # 데이터 베이스 접속주소
SQLALCHEMY_TRACK_MODIFICATIONS = False  # 이벤트를 처리하는 옵션 >> 안필요해서 False

오류 내용 (이미지)
https://www.notion.so/kahu/7c1318b38b96418598a18e9b1c4f0b26
이미지 첨부가 안되서 노션에올려놓고 공유합니다

오류내용 텍스트
(myproject) C:\projects\myproject>flask db init
c:\venvs\myproject\lib\site-packages\flask_sqlalchemy__init__.py:851: UserWarning: Neither SQLALCHEMY_DATABASE_URI nor SQLALCHEMY_BINDS is set. Defaulting SQLALCHEMY_DATABASE_URI to "sqlite:///:memory:".
warnings.warn(
Creating directory C:\projects\myproject\migrations ... done
Creating directory C:\projects\myproject\migrations\versions ... done
Generating C:\projects\myproject\migrations\alembic.ini ... done
Generating C:\projects\myproject\migrations\env.py ... done
Generating C:\projects\myproject\migrations\README ... done
Generating C:\projects\myproject\migrations\script.py.mako ... done
Please edit configuration/connection/logging settings in 'C:\projects\myproject\migrations\alembic.ini' before proceeding.

(myproject) C:\projects\myproject>flask db migrate
c:\venvs\myproject\lib\site-packages\flask_sqlalchemy_init__.py:851: UserWarning: Neither SQLALCHEMY_DATABASE_URI nor SQLALCHEMY_BINDS is set. Defaulting SQLALCHEMY_DATABASE_URI to "sqlite:///:memory:".
warnings.warn(
INFO [alembic.runtime.migration] Context impl SQLiteImpl.
INFO [alembic.runtime.migration] Will assume non-transactional DDL.
INFO [alembic.autogenerate.compare] Detected added table 'question'
INFO [alembic.autogenerate.compare] Detected added table 'answer'
Generating C:\projects\myproject\migrations\versions\8edfc313bdfb
.py ... done

(myproject) C:\projects\myproject>flask db upgrade
c:\venvs\myproject\lib\site-packages\flask_sqlalchemy__init__.py:851: UserWarning: Neither SQLALCHEMY_DATABASE_URI nor SQLALCHEMY_BINDS is set. Defaulting SQLALCHEMY_DATABASE_URI to "sqlite:///:memory:".
warnings.warn(
INFO [alembic.runtime.migration] Context impl SQLiteImpl.
INFO [alembic.runtime.migration] Will assume non-transactional DDL.
INFO [alembic.runtime.migration] Running upgrade -> 8edfc313bdfb, empty message

위와 같습니다.

증상은 pybo.db 파일이 생기지 않으며

pybo.kr 게시판내에, 다른 질문 글들을 참조하여

migrations 파일을 삭제하고 (pybo.db는 생긴적이 없어서 삭제할일이 없네요)

처음부터 다시
flask db init
flask db migrate
flask db upgrade 를 실행했고

선생님 책과 틀린점

c:\venvs\myproject\lib\site-packages\flask_sqlalchemy__init__.py:851: UserWarning: Neither SQLALCHEMY_DATABASE_URI nor SQLALCHEMY_BINDS is set. Defaulting SQLALCHEMY_DATABASE_URI to "sqlite:///:memory:".
warnings.warn(

이부부분이 생기는게 뭔가 문제가 있는거 같습니다.

구글에 검색을 해봤지만, 해결 방법을 못찾겠네요
꼭 도와주시면 감사하겠습니다.

ilue00 1222

2021년 7월 5일 12:49 오전

목록으로
3개의 답변이 있습니다. 1 / 1 Page

찾았어요!!

SQLAlCHEMY_DATABASE_URI = 'sqlite:///{}'.format(os.path.join(BASE_DIR, 'pybo.db'))

여기 오타 있으시네,,,,

SQLAlCHEMY_DATABASE_URI -> SQLALCHEMY_DATABASE_URI

Hwanython

2021년 12월 2일 11:07 오전

안녕하세요.

제가 봐도 코드에 이상은 없는것 같아요.
다만, 원인은 import config 하고 app.config.from_object(config) 요 코드가 잘 동작을 못하는 것 같습니다.

저 부분이 config.py 에 등록한 SQLALCHEMY_DATABASE_URI 항목을 app.config에 등록하는 과정인데
무슨 이유로 동작 안하는지 모르겠네요.

해당 챕터의 소스들은 모두 깃허브에 공유되어 있으니 해당 챕터의 소스를 깃허브에서 내려받아서 한번 실행해 보세요. 그리고 본인이 작성하신 소스와도 혹시라도 다른점이 있는지 확인해 보세요.

박응용

2021년 7월 5일 8:26 오전

저도 똑같은 에러가 났었는데 init_app을 SQLALCHEMY_DATABASE_URI 아래에 넣어주니까 바로 해결됐습니다.

app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://root:ekdldksk@localhost:3306/testdb'

db.init_app(app)

fk_python

2021년 11월 30일 4:44 오후