<table class="provenance-header" style="border: 0; border-collapse: collapse; margin: 0 0 16px 0; width: 100%;">
<tr style="border: 0;">
<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](https://foxhop.net/f33ab6ea-2f95-11f1-ae4e-e86a64d24d78/python-script-to-build-an-oracle-or-mysql-flat-file-vault)  
> **Snapshot:** 2026-09-14T12:39:42Z  
> **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.*

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

![Scan for living source](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=)

</td>
</tr>
</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){rel="nofollow" target="_blank"}*

::: {#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){rel="nofollow"
target="_blank"}*

::: {#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](https://foxhop.net/f33ab6ea-2f95-11f1-ae4e-e86a64d24d78/python-script-to-build-an-oracle-or-mysql-flat-file-vault)  
**Snapshot:** 2026-09-14T12:39:42Z  
**Generator:** Remarkbox `695de26`
