Fileという新しい列タイプを定義しました。これにより、ファイル名のみをデータベースに保存できるようになります。次に、実際のファイルをファイルシステムのroot + subfolder+nameに保存します。
File(root, subfolder="", max_length=100, **kwargs)
私が抱えている問題は、PasteDeploy構成ファイルでルートを定義したいということです。構成にアクセスできるように、実行時にこれを定義するにはどうすればよいですか?
Fileという新しい列タイプを定義しました。これにより、ファイル名のみをデータベースに保存できるようになります。次に、実際のファイルをファイルシステムのroot + subfolder+nameに保存します。
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()
そこから設定を取得できます。私には、これはあなたのスキーマについてもう少し考える必要があるように思えます。カスタム列タイプを実装する場合でも、そのタイプをエンジンがサポートする SQL 列タイプにマップする必要があります。フォルダーとファイル名の場合、これは最も自然に 2 つのvarchar
列になります。では、クラスで両方の型のpath
との2 つのフィールドを使用しないのはなぜですか?filename
String(256)
構成可能なルートに関しては、このルートに対して相対を指定してpath
、1 か所でのみ変更できるようにする必要があるように思えます。構成ファイルに保存されているものを除いて、ほとんどの構成をデータベースに持つことは、コードの匂いです。ルートを他の構成テーブルの列にすることよりも、 a を使用してルートを参照する方が望ましいと思いますForeignKey
。