Giter Site home page Giter Site logo

Comments (8)

karec avatar karec commented on May 16, 2024

Hi,

This error is telling you that the database does not has a table named user, could you drop the content of the migration generated by flask db migrate ?

EDIT: could you also provide the path of the database in your config ? thanks

from cookiecutter-flask-restful.

 avatar commented on May 16, 2024

That's what migrate command outputs after init:

INFO  [alembic.runtime.migration] Context impl SQLiteImpl.
INFO  [alembic.runtime.migration] Will assume non-transactional DDL.
INFO  [alembic.autogenerate.compare] Detected added table 'user'
INFO  [alembic.autogenerate.compare] Detected added table 'token_blacklist'
  Generating /home/devaerial/git-clones/restful_api/migrations/versions/1f875345b537_.py ... done

And here is my config value for database: SQLALCHEMY_DATABASE_URI = "sqlite:///myapi.db"

from cookiecutter-flask-restful.

karec avatar karec commented on May 16, 2024

Just to be sure, can you try to use an absolute path for your SQLALCHEMY_DATABASE_URI instead of a relative one ? Looks like when you start your shell it doesn't pick to correct path and use an empty database

from cookiecutter-flask-restful.

 avatar commented on May 16, 2024

It works with absolute path, but I'm more interested on how to make it works with relative one. If I would like clone my repo on another machine I would need manually change path to sqlite development database which is not very convenient.

from cookiecutter-flask-restful.

karec avatar karec commented on May 16, 2024

Yes I understand, the simplest way is to do this is to update the config.py file with something like this:

import os

DB_PATH = os.path.join(os.path.dirname(__file__), 'my_db.db')
SQLALCHEMY_DATABASE_URI = "sqlite:////{}".format(DB_PATH)

You can off course update the DB_PATH to fit your needs, but this way DB_PATH will always be an absolute path, but based on the location of your config file (inside app directory)

This is one of the solution and maybe the simplest, but you can also hook inside the create_app function to dynamically get a path relative to your application instance and update your config accordingly during this step

from cookiecutter-flask-restful.

 avatar commented on May 16, 2024

That worked for me. I've also tried this approach in similar app that uses dynaconf extension to load configuration variables from .yaml file instead of python config file , but, unfortunately, it failed with the same error. Still, thanks anyway.

from cookiecutter-flask-restful.

karec avatar karec commented on May 16, 2024

For this kind of tool you can try to hook in the app factory, for example in this template something like this should work (not tested)

def configure_app(app, testing=False):
    """set configuration for application
    """
    # default configuration
    app.config.from_object('myapi.config')

    if testing is True:
        # override with testing config
        app.config.from_object('myapi.configtest')
    else:
        # override with env variable, fail silently if not set
        app.config.from_envvar("MYAPI_CONFIG", silent=True)

    # override SQLALCHEMY_DATABASE_URI
    path = os.path.join(os.path.dirname(__file__), my_settings.get('DB_PATH'))
    # or using app.root_path
    # path = os.path.join(app.root_path, my_settings.get('DB_PATH'))

    app.config['SQLALCHEMY_DATABASE_URI'] = "sqlite://{}".format(path)

from cookiecutter-flask-restful.

karec avatar karec commented on May 16, 2024

closing, don't hesitate to re-open this issue if needed

from cookiecutter-flask-restful.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.