这可能是一个愚蠢的问题,但我对SQLAlchemy如何使用我的Flask应用程序使用的实际数据库感到困惑。我有一个python文件,models.py,它定义了一个SQLAlchemy数据库模式,然后我有这部分代码为它创建了数据库
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 :(得分:3)
以下是使用SQLite连接SQLAlchemy的docs。
正如您所猜测的,当您使用sqlite://
作为连接字符串时,实际上是在内存中创建SQLite数据库。如果您使用sqlite:///{}/arkaios.db'.format(PWD)
,则会在当前目录中创建一个新数据库。如果您打算这样做,以便可以从其他应用程序访问该数据库,那么您应该从配置文件中导入连接字符串,而不是使用sqlite://
。