gpt4 book ai didi

Python - 如何将 SQLAlchemy 连接到内存中的现有数据库

转载 作者:行者123 更新时间:2023-12-03 23:06:17 30 4
gpt4 key购买 nike

我正在从现有的 shema 创建我的数据库,它存储在 :memory: .

db = Database(filename=':memory:', schema='schema.sql')
db.recreate()
我现在想将它“链接”到 SQL Alchemy。遵循不同的方法,但无法做到正确。
我目前的尝试如下:
engine = create_engine('sqlite:///:memory:')

Base = automap_base()
Base.prepare(engine, reflect=True)
User = Base.classes.user

session = Session(engine)
就像我尝试过的其他东西一样,这会抛出 AttributeError: user .
我怎样才能一起完成这项工作?

最佳答案

文档的相关部分在这里:https://sqlite.org/inmemorydb.html .
如果您使用 :memory:那么每个连接都会有自己的内存数据库。诀窍是使用带有 URI format 的内存数据库中的命名。 , 如下

import random
import string
import sqlite3

# creating a random name for the temporary memory DB
sqlite_shared_name = "test_db_{}".format(
random.sample(string.ascii_letters, k=4)
)

create_engine(
"sqlite:///file:{}?mode=memory&cache=shared&uri=true".format(
sqlite_shared_name))
  • 格式是查询字符串参数 uri=true 中所述的 URI (参见 SQLAlchemy 文档)
  • 它是一个带有 mode=memory 的内存数据库
  • 它可以通过cache=shared在各种连接之间共享

  • 如果您有另一个连接,那么您可以使用或多或少相同的连接字符串。例如,使用 python 的 sqlite 连接到内存中的同一个数据库。模块,您可以删除 uri=true从查询字符串(和方言部分 sqlite:/// )并将其作为参数传递:
    dest = sqlite3.connect(
    "file:{}?mode=memory&cache=shared".format(sqlite_shared_name),
    uri=True)

    关于Python - 如何将 SQLAlchemy 连接到内存中的现有数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62502827/

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