python - 我如何在运行时将变量传递给 SQLAlchemy ORM 定义?

标签 python sqlalchemy pyramid paster

我已经定义了一个名为 File 的新 Column 类型,它应该让我在数据库中只存储文件名。然后我会将实际文件存储在文件系统中的根目录+子文件夹+名称中。

File(root, subfolder="", max_length=100,  **kwargs)

我遇到的问题是我想在 PasteDeploy 配置文件中定义根目录。如何在运行时定义它以便我可以访问配置?

最佳答案

为什么不避免自定义列类型的复杂性,而只是将文件路径存储为列,并提供一些可以为您加载文件数据的属性或混合属性?

class Data(Base):
    path = Column(String)

def myview(request):
    data = Data(path='foo')

    root_path = request.registry.settings['data_root']
    with open(os.path.join(root_path, data.path), 'rb') as fp:
        file_data = fp.read()
    # ...

显然,如果需要,您可以将其中一些功能包装到 Data 上的方法中。

无论如何访问 INI 设置的方式是以下之一:

  1. 在应用程序从设置/配置对象启动期间。
  2. 在请求期间,您可以从 request.registry.settings 传递设置。
  3. 在请求期间,您可以通过 pyramid.threadlocal.get_current_request() 访问事件请求,并从那里获取设置。

关于python - 我如何在运行时将变量传递给 SQLAlchemy ORM 定义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12224215/

相关文章:

python - 如何在 Chameleon 中包含另一个模板?

debugging - 如何配置 VS Code 来调试 vagrant 容器中的代码?

python - 使用 distutils 和 pip 部署一个子包

python - 从 scikit-learn 训练 SVC 表明使用 -h 0 可能会更快?

python - Python 中的正则表达式用于匹配可能包含或不包含某些部分的模式

python - 使用 CLI 脚本共享 Pyramid 配置

python - ConfigParser - 打印 config.sections() 返回 []

python - Camelot 无法创建新项目

python - 将数据从数据库移动到另一个数据库时出错

python - 检查 SQLAlchemy 列的属性?