Integrate voussoirkit sqlhelpers.
https://github.com/voussoir/else/tree/master/SQLHelpers
This commit is contained in:
		
							parent
							
								
									6f371701e4
								
							
						
					
					
						commit
						b5902ba4f1
					
				
					 4 changed files with 9 additions and 37 deletions
				
			
		|  | @ -51,36 +51,6 @@ def album_zip_filenames(album, recursive=True): | ||||||
| 
 | 
 | ||||||
|     return arcnames |     return arcnames | ||||||
| 
 | 
 | ||||||
| def binding_filler(column_names, values, require_all=True): |  | ||||||
|     ''' |  | ||||||
|     Manually aligning question marks and bindings is annoying. |  | ||||||
|     Given the table's column names and a dictionary of {column: value}, |  | ||||||
|     return the question marks and the list of bindings in the right order. |  | ||||||
| 
 |  | ||||||
|     require_all: |  | ||||||
|         If `values` does not contain one of the column names, should we raise |  | ||||||
|         an exception? |  | ||||||
|         Otherwise, that column will simply receive None. |  | ||||||
| 
 |  | ||||||
|     Ex: |  | ||||||
|     column_names=['id', 'name', 'score'], |  | ||||||
|     values={'score': 20, 'id': '1111', 'name': 'James'} |  | ||||||
|     -> |  | ||||||
|     returns ('?, ?, ?', ['1111', 'James', 20]) |  | ||||||
|     ''' |  | ||||||
|     values = values.copy() |  | ||||||
|     for column in column_names: |  | ||||||
|         if column in values: |  | ||||||
|             continue |  | ||||||
|         if require_all: |  | ||||||
|             raise ValueError('Missing column "%s"' % column) |  | ||||||
|         else: |  | ||||||
|             values.setdefault(column, None) |  | ||||||
|     qmarks = '?' * len(column_names) |  | ||||||
|     qmarks = ', '.join(qmarks) |  | ||||||
|     bindings = [values[column] for column in column_names] |  | ||||||
|     return (qmarks, bindings) |  | ||||||
| 
 |  | ||||||
| def checkerboard_image(color_1, color_2, image_size, checker_size): | def checkerboard_image(color_1, color_2, image_size, checker_size): | ||||||
|     ''' |     ''' | ||||||
|     Generate a PIL Image with a checkerboard pattern. |     Generate a PIL Image with a checkerboard pattern. | ||||||
|  |  | ||||||
|  | @ -10,6 +10,7 @@ from . import helpers | ||||||
| from voussoirkit import bytestring | from voussoirkit import bytestring | ||||||
| from voussoirkit import pathclass | from voussoirkit import pathclass | ||||||
| from voussoirkit import spinal | from voussoirkit import spinal | ||||||
|  | from voussoirkit import sqlhelpers | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| class ObjectBase: | class ObjectBase: | ||||||
|  | @ -284,7 +285,7 @@ class Album(ObjectBase, GroupableMixin): | ||||||
|             'albumid': self.id, |             'albumid': self.id, | ||||||
|             'directory': filepath.absolute_path, |             'directory': filepath.absolute_path, | ||||||
|         } |         } | ||||||
|         (qmarks, bindings) = helpers.binding_filler(constants.SQL_ALBUM_DIRECTORY_COLUMNS, data) |         (qmarks, bindings) = sqlhelpers.insert_filler(constants.SQL_ALBUM_DIRECTORY_COLUMNS, data) | ||||||
|         query = 'INSERT INTO album_associated_directories VALUES(%s)' % qmarks |         query = 'INSERT INTO album_associated_directories VALUES(%s)' % qmarks | ||||||
|         cur = self.photodb.sql.cursor() |         cur = self.photodb.sql.cursor() | ||||||
|         cur.execute(query, bindings) |         cur.execute(query, bindings) | ||||||
|  |  | ||||||
|  | @ -21,6 +21,7 @@ from voussoirkit import cacheclass | ||||||
| from voussoirkit import expressionmatch | from voussoirkit import expressionmatch | ||||||
| from voussoirkit import pathclass | from voussoirkit import pathclass | ||||||
| from voussoirkit import spinal | from voussoirkit import spinal | ||||||
|  | from voussoirkit import sqlhelpers | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| logging.basicConfig() | logging.basicConfig() | ||||||
|  | @ -247,7 +248,7 @@ class PDBAlbumMixin: | ||||||
|             'description': description, |             'description': description, | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         (qmarks, bindings) = helpers.binding_filler(constants.SQL_ALBUM_COLUMNS, data) |         (qmarks, bindings) = sqlhelpers.insert_filler(constants.SQL_ALBUM_COLUMNS, data) | ||||||
|         query = 'INSERT INTO albums VALUES(%s)' % qmarks |         query = 'INSERT INTO albums VALUES(%s)' % qmarks | ||||||
| 
 | 
 | ||||||
|         cur.execute(query, bindings) |         cur.execute(query, bindings) | ||||||
|  | @ -297,7 +298,7 @@ class PDBBookmarkMixin: | ||||||
|             'url': url, |             'url': url, | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         (qmarks, bindings) = helpers.binding_filler(constants.SQL_BOOKMARK_COLUMNS, data) |         (qmarks, bindings) = sqlhelpers.insert_filler(constants.SQL_BOOKMARK_COLUMNS, data) | ||||||
|         query = 'INSERT INTO bookmarks VALUES(%s)' % qmarks |         query = 'INSERT INTO bookmarks VALUES(%s)' % qmarks | ||||||
|         cur = self.sql.cursor() |         cur = self.sql.cursor() | ||||||
|         cur.execute(query, bindings) |         cur.execute(query, bindings) | ||||||
|  | @ -409,7 +410,7 @@ class PDBPhotoMixin: | ||||||
|             'thumbnail': None, |             'thumbnail': None, | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         (qmarks, bindings) = helpers.binding_filler(constants.SQL_PHOTO_COLUMNS, data) |         (qmarks, bindings) = sqlhelpers.insert_filler(constants.SQL_PHOTO_COLUMNS, data) | ||||||
|         query = 'INSERT INTO photos VALUES(%s)' % qmarks |         query = 'INSERT INTO photos VALUES(%s)' % qmarks | ||||||
|         cur = self.sql.cursor() |         cur = self.sql.cursor() | ||||||
|         cur.execute(query, bindings) |         cur.execute(query, bindings) | ||||||
|  | @ -918,7 +919,7 @@ class PDBTagMixin: | ||||||
|             'name': tagname, |             'name': tagname, | ||||||
|             'description': description, |             'description': description, | ||||||
|         } |         } | ||||||
|         (qmarks, bindings) = helpers.binding_filler(constants.SQL_TAG_COLUMNS, data) |         (qmarks, bindings) = sqlhelpers.insert_filler(constants.SQL_TAG_COLUMNS, data) | ||||||
|         query = 'INSERT INTO tags VALUES(%s)' % qmarks |         query = 'INSERT INTO tags VALUES(%s)' % qmarks | ||||||
|         cur.execute(query, bindings) |         cur.execute(query, bindings) | ||||||
|         if commit: |         if commit: | ||||||
|  | @ -1086,7 +1087,7 @@ class PDBUserMixin: | ||||||
|             'created': created, |             'created': created, | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         (qmarks, bindings) = helpers.binding_filler(constants.SQL_USER_COLUMNS, data) |         (qmarks, bindings) = sqlhelpers.insert_filler(constants.SQL_USER_COLUMNS, data) | ||||||
|         query = 'INSERT INTO users VALUES(%s)' % qmarks |         query = 'INSERT INTO users VALUES(%s)' % qmarks | ||||||
|         cur = self.sql.cursor() |         cur = self.sql.cursor() | ||||||
|         cur.execute(query, bindings) |         cur.execute(query, bindings) | ||||||
|  |  | ||||||
|  | @ -2,6 +2,6 @@ bcrypt | ||||||
| flask | flask | ||||||
| gevent | gevent | ||||||
| pillow | pillow | ||||||
| voussoirkit | voussoirkit>=0.0.18 | ||||||
| zipstream | zipstream | ||||||
| git+https://github.com/senko/python-video-converter.git | git+https://github.com/senko/python-video-converter.git | ||||||
|  |  | ||||||
		Loading…
	
		Reference in a new issue