在Flask-SQLAlchemy中:如何在config.py中设置check_same_thread = False?

时间:2018-06-13 21:56:37

标签: flask sqlalchemy flask-sqlalchemy

在我的Config类中,我想将check_same_thread设置为False,如下所示(以避免错误:sqlalchemy.exc.ProgrammingError:(sqlite3.ProgrammingError)在线程中创建的SQLite对象只能在同一个线程中使用。 .....)

class Config(object):  
    #------#
    SQLALCHEMY_DATABASE_URI = 'sqlite:///app.db?check_same_thread=False'
    #------#

但是,在设置Flask应用程序的Config类时,我遵循了Miguel Grinberg的Flask Mega教程并按如下方式设置了SQLAlchemy数据库:

class Config(object): 
    #------#
    SQLALCHEMY_DATABASE_URI = os.environ.get('DATABASE_URL') or \
        'sqlite:///'+os.path.join(basedir, 'app.db')
    SQLALCHEMY_TRACK_MODIFICATIONS = False
   #------#

在上述情况下,如何将check_same_thread设置为False? 任何帮助或指导都将受到高度赞赏。

谢谢!

2 个答案:

答案 0 :(得分:0)

您可以尝试这样的事情:

class Config(object): 
    #------#
    SQLALCHEMY_DATABASE_URI = os.environ.get('DATABASE_URL') or \
        'sqlite:///'+os.path.join(basedir, 'app.db') + '?check_same_thread=False'
    SQLALCHEMY_TRACK_MODIFICATIONS = False
   #------#

答案 1 :(得分:0)

实际上,对我的问题有用的答案是:

SQLALCHEMY_DATABASE_URI = (os.environ.get('DATABASE_URL') or \
    'sqlite:///'+os.path.join(basedir, 'app.db'))+'?check_same_thread=False'

请注意,'?check_same_thread = False'部分应添加到or的任一侧的两个案例中。