=========================================================
python-script-to-build-an-oracle-or-mysql-flat-file-vault
=========================================================

.. raw:: html

   <table class="provenance-header" style="border: 0; border-collapse: collapse; margin: 0 0 16px 0; width: 100%;">

.. raw:: html

   <tr style="border: 0;">

.. raw:: html

   <td style="border: 0; vertical-align: top; padding: 0 24px 0 0;">

..

   | **Source:**
     https://foxhop.net/f33ab6ea-2f95-11f1-ae4e-e86a64d24d78/python-script-to-build-an-oracle-or-mysql-flat-file-vault
   | **Snapshot:** 2026-09-14T11:41:20Z
   | **Generator:** Remarkbox ``695de26``

   *This is a thread snapshot. The living document lives at the source
   URI above — it may have been edited, extended, or replied-to since.*

.. raw:: html

   </td>

.. raw:: html

   <td style="border: 0; vertical-align: top; width: 200px; text-align: right;">

.. figure:: data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMQAAADEAQAAAADo3bPGAAAB9ElEQVR42t1YQY7DQAiz+gH+/0v/gMVm0sNKvVTjw25StWkijQUY4wn6w0H80ScAiqyaL/T8ssu3Xvh0fPMEXT2fGog5B631M7fu46C0PEgqnLnwrQjORDNZ0+rt3KVwJoytlHKGEE6rLIpJEMOIztRH5Pp1RPimY9Kkz3CgRD4z/n59tn+GAioLXKi6jzMrt1p08BSR+NaJvBHbpLXUE78V0/28KVHu0Pmik6g/ARzRQBAWOZEAGV6XYmK7b6Q/jijA6ykNBQPzTMAI1McCYAEVkDsICZxDM/N7opNqdyJv6h0B6RSaCRHggck8SJYDtRMMFIlniAClbq63UwNzYavveFCuj9lwH8dUo3VasTCkb/CME4hdSOPM1/t9Kgjw0QWbkkT/1DO93+1k1bvPA4mOhjV34K2Ti/iDLf2j1mqiTP+IzjSCMlYeSPfzVp6olHBb5cy/BK9NOdbKziHg/Xi4qaIDOcrDSDz0wpIC+6yO+JCVnM2YCjT/PCMCPn49Fe3kJNsdqY/LolG67somgQk/ajbTdJCYYqfRff/mlK3DctOG5o8yx90v1LGKkfmjRTUT4LHjBor4XhPBHtQ7OvEguA+uYxC2VuwMDp650y5YIbTfPmbH+27zvEPvQ2Tiakng9yId2m+7Uc8OGEjowf96L/YD2NjAxLrVylgAAAAASUVORK5CYII=
   :alt: Scan for living source

   Scan for living source

.. raw:: html

   </td>

.. raw:: html

   </tr>

.. raw:: html

   </table>

Python script to build an Oracle or mySQL flat file vault
=========================================================

This module provides a vault class. This class is useful for creating a
flat filesystem that could be used for storing images, pdfs, mp3,
autocad drawings etc.

The meta data about this file system would have to be stored in a
database.

`pyVault.py <http://pyVault.py>`__

.. container::
   :name: cb1

   ::

      from os import makedirs, path
      from random import randrange as r
      from uuid import uuid4

      class Vault( object ):
          def __init__( self, path='', name='vault', l=65, w=65 ):
              self.path = path 
              self.name = name
              self.l = l
              self.w = w

              self.initVault()

          def initVault( self ):
              """Build the vault directories if they don't exist"""
              p = self.path + '/' + self.name
              if path.exists( p ):
                  pass
              else:
                  for l in range( self.l ):
                      for w in range( self.w ):
                          if self.path == '':
                              makedirs( self.name + '/' + str( l ) + '/' + str( w ) )
                          else:
                              makedirs(  self.path + '/' + self.name + '/' + str( l ) + '/' + str( w ) )

          def getFilename( self, ext='' ):
              """Generate and return a valid unique file path based on vault"""
              l, w = str( r(self.l) ), str( r(self.w) )
              filename = str( uuid4() )

              return self.name + '/' + l + '/' + w + '/' + filename + ext

Example pyvault test
====================

`test_pyVault.py <http://test_pyVault.py>`__

.. container::
   :name: cb2

   ::

      # import pyVault module 
      from pyVault import Vault

      # create a vault with default settings in the current directory.
      v = Vault( ) # create a vault object

      print v.getFilename() # generate a valid path and filename from vault
      print v.getFilename( '.jpg' ) # generate a valid path and jpg filename from vault

      # create vault2 in /var/db 2 directories wide and 5 directories deep
      v2 = Vault( path="/var/db", name="vault2", l=5, w=2 )

      print v2.getFilename( '.mp3' ) # generate a valid path and mp3 filename from vault
      print v2.getFilename() # generate a valid path and filename from vault

Example database schema to use with pyVault
===========================================

UUIDs are used for the actual file names to prevent overwriting if we
need version control.

UUIDs are also a great 'key' that we could search on in a database.

Below shows an example database schema that could use this vault
filesystem:

::

   vault
      id (int) # auto increment
      uuid (varchar 32) # indexed field: 28c6104f-cb09-4910-8031-efad22e1ebf9
      name (varchar 64) # human readable filename: foxhop-october.jpg
      location (varchar 128) # vault/12/59/28c6104f-cb09-4910-8031-efad22e1ebf9.jpg
      filetype (varchar 8) # extension (move to own table?): jpg
      description (text) # comments, description, info: foxhop in october 

Then other tables can refer and relate to this data, like a job table
could have relations mapped to jpg files and pdf files, and a video of
the finished job and an autocad drawing when it was designed.

--------------

| **Source:**
  https://foxhop.net/f33ab6ea-2f95-11f1-ae4e-e86a64d24d78/python-script-to-build-an-oracle-or-mysql-flat-file-vault
| **Snapshot:** 2026-09-14T11:41:20Z
| **Generator:** Remarkbox ``695de26``
