我已经定义了一个名为 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 设置的方式是以下之一:
- 在应用程序从设置/配置对象启动期间。
- 在请求期间,您可以从
request.registry.settings
传递设置。 - 在请求期间,您可以通过
pyramid.threadlocal.get_current_request()
访问事件请求,并从那里获取设置。
关于python - 我如何在运行时将变量传递给 SQLAlchemy ORM 定义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12224215/