gpt4 book ai didi

python - sqlalchemy.exc.OperationalError : (sqlite3. OperationalError) 未知数据库 "mydb"

转载 作者:行者123 更新时间:2023-12-05 04:53:02 26 4
gpt4 key购买 nike

我在使用 flask_alchemy 进行单元测试时遇到问题

生产环境我用的是postgresql数据库

"SQLALCHEMY_DATABASE_URI": "postgresql://login:passwd@dburl:1234/mydatabase",

为了使用 postgresql 模式,在我的实体定义中我声明了一个 _table_args 来指定一个模式

    class MyTable(Base):
__tablename__ = 'my_tablename'
__table_args__ = {'schema': 'mydbschema'}

my_id = Column('my_id', Date, primary_key=True)

....

但是在我的单元测试中我想使用内存数据库

"SQLALCHEMY_DATABASE_URI": "sqlite://",

当我运行我的函数时出现此错误:

E   sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) unknown database "mydbschema"

有人知道这种情况下的解决方法吗?

最佳答案

我知道 OP 找到了一个解决方法(尽管我不确定它是如何工作的),但对于那些仍在寻找合适解决方案的人来说 - 你需要使用 ATTACH DATABASE statement为了选择特定的架构,例如,如果您正在使用 pytest,您可以使用以下夹具来创建测试设置:

from sqlalchemy import create_engine

@pytest.fixture
def setup_db():
engine = create_engine('sqlite:///:memory:')
with engine.connect() as conn:
conn.execute('ATTACH DATABASE \':memory:\' AS mydbschema;')
yield conn

当然,您可以根据需要定义夹具范围。

同样,你可以使用DETACH DATABASE statement从数据库连接中分离和分离命名数据库(如有必要),这将在内存数据库的情况下破坏数据库。

关于python - sqlalchemy.exc.OperationalError : (sqlite3. OperationalError) 未知数据库 "mydb",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66208938/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com