2014-02-18 55 views
0

這可能是一個愚蠢的問題,但我對SQLAlchemy如何與我的Flask應用程序使用的實際數據庫一起工作感到困惑。我有一個Python文件,models.py定義了SQLAlchemy的數據庫架構,然後我有我的這部分代碼,創建它我的sqlite數據庫在哪裏?

if __name__ == '__main__': 
    from datetime import timedelta 

    from sqlalchemy import create_engine 
    from sqlalchemy.orm import sessionmaker 

    engine = create_engine('sqlite://', echo=True) 

    Base.metadata.create_all(engine) 
    Session = sessionmaker(bind=engine) 
    session = Session() 

    # Add a sample user 
    user = User(name='Philip House', password="test") 
    session.add(user) 
    session.commit() 

我運行該文件的數據庫,它工作正常,但現在我我很困惑,因爲數據庫發生了什麼..我可以在另一個應用程序中訪問它嗎?我也聽說它可能只是在內存中,如果是這樣的話,我怎樣才能使它成爲一個永久的數據庫文件,我可以使用我的應用程序?

而且在我的應用程序,這就是我提到我SQLite數據庫中的配置文件:

PWD = os.path.abspath(os.curdir) 
DEBUG=True 
SQLALCHEMY_DATABASE_URI = 'sqlite:///{}/arkaios.db'.format(PWD) 

我不知道如果這可能是任何幫助。

謝謝!

+0

如果您對答案感到滿意,請接受它! – ACV

回答

3

以下是使用SQLite連接SQLAlchemy的docs

正如你猜測的那樣,當你使用sqlite://作爲連接字符串時,你實際上是在內存中創建了一個SQLite數據庫。如果您要使用sqlite:///{}/arkaios.db'.format(PWD),則應在當前目錄中創建一個新數據庫。如果您打算這樣做,以便您可以從其他應用程序訪問該數據庫,則應從配置文件中導入連接字符串,並使用該字符串代替sqlite://

相關問題