mirror of
				https://github.com/simon987/hexlib.git
				synced 2025-11-04 01:26:52 +00:00 
			
		
		
		
	Compare commits
	
		
			2 Commits
		
	
	
		
			78c04ef6f3
			...
			826312115c
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 826312115c | |||
| 372abb0076 | 
							
								
								
									
										14
									
								
								hexlib/db.py
									
									
									
									
									
								
							
							
						
						
									
										14
									
								
								hexlib/db.py
									
									
									
									
									
								
							@ -118,9 +118,13 @@ class Table:
 | 
				
			|||||||
        with sqlite3.connect(self._state.dbfile, **self._state.dbargs) as conn:
 | 
					        with sqlite3.connect(self._state.dbfile, **self._state.dbargs) as conn:
 | 
				
			||||||
            conn.row_factory = sqlite3.Row
 | 
					            conn.row_factory = sqlite3.Row
 | 
				
			||||||
            try:
 | 
					            try:
 | 
				
			||||||
 | 
					                col_types = conn.execute("PRAGMA table_info(%s)" % self._table).fetchall()
 | 
				
			||||||
                cur = conn.execute("SELECT * FROM %s %s" % (self._table, where_clause), params)
 | 
					                cur = conn.execute("SELECT * FROM %s %s" % (self._table, where_clause), params)
 | 
				
			||||||
                for row in cur:
 | 
					                for row in cur:
 | 
				
			||||||
                    yield dict(row)
 | 
					                    yield dict(
 | 
				
			||||||
 | 
					                        (col[0], _deserialize(row[col[0]], col_types[i]["type"]))
 | 
				
			||||||
 | 
					                        for i, col in enumerate(cur.description)
 | 
				
			||||||
 | 
					                    )
 | 
				
			||||||
            except:
 | 
					            except:
 | 
				
			||||||
                return None
 | 
					                return None
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -128,9 +132,13 @@ class Table:
 | 
				
			|||||||
        with sqlite3.connect(self._state.dbfile, **self._state.dbargs) as conn:
 | 
					        with sqlite3.connect(self._state.dbfile, **self._state.dbargs) as conn:
 | 
				
			||||||
            conn.row_factory = sqlite3.Row
 | 
					            conn.row_factory = sqlite3.Row
 | 
				
			||||||
            try:
 | 
					            try:
 | 
				
			||||||
 | 
					                col_types = conn.execute("PRAGMA table_info(%s)" % self._table).fetchall()
 | 
				
			||||||
                cur = conn.execute("SELECT * FROM %s" % (self._table,))
 | 
					                cur = conn.execute("SELECT * FROM %s" % (self._table,))
 | 
				
			||||||
                for row in cur:
 | 
					                for row in cur:
 | 
				
			||||||
                    yield dict(row)
 | 
					                    yield dict(
 | 
				
			||||||
 | 
					                        (col[0], _deserialize(row[col[0]], col_types[i]["type"]))
 | 
				
			||||||
 | 
					                        for i, col in enumerate(cur.description)
 | 
				
			||||||
 | 
					                    )
 | 
				
			||||||
            except:
 | 
					            except:
 | 
				
			||||||
                return None
 | 
					                return None
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -209,7 +217,7 @@ def _serialize(value):
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def _deserialize(value, col_type):
 | 
					def _deserialize(value, col_type):
 | 
				
			||||||
    if col_type == "blob":
 | 
					    if col_type.lower() == "blob":
 | 
				
			||||||
        return base64.b64decode(value)
 | 
					        return base64.b64decode(value)
 | 
				
			||||||
    return value
 | 
					    return value
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										2
									
								
								setup.py
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								setup.py
									
									
									
									
									
								
							@ -2,7 +2,7 @@ from setuptools import setup
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
setup(
 | 
					setup(
 | 
				
			||||||
    name="hexlib",
 | 
					    name="hexlib",
 | 
				
			||||||
    version="1.79",
 | 
					    version="1.81",
 | 
				
			||||||
    description="Misc utility methods",
 | 
					    description="Misc utility methods",
 | 
				
			||||||
    author="simon987",
 | 
					    author="simon987",
 | 
				
			||||||
    author_email="me@simon987.net",
 | 
					    author_email="me@simon987.net",
 | 
				
			||||||
 | 
				
			|||||||
@ -110,3 +110,24 @@ class TestPersistentState(TestCase):
 | 
				
			|||||||
            del s["a"][456]
 | 
					            del s["a"][456]
 | 
				
			||||||
        except Exception as e:
 | 
					        except Exception as e:
 | 
				
			||||||
            self.fail(e)
 | 
					            self.fail(e)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def test_deserialize_get_set(self):
 | 
				
			||||||
 | 
					        s = PersistentState()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        s["a"][0] = {"x": b'abc'}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        self.assertEqual(s["a"][0]["x"], b'abc')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def test_deserialize_sql(self):
 | 
				
			||||||
 | 
					        s = PersistentState()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        s["a"][0] = {"x": b'abc'}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        self.assertEqual(list(s["a"].sql("WHERE 1=1"))[0]["x"], b'abc')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def test_deserialize_iter(self):
 | 
				
			||||||
 | 
					        s = PersistentState()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        s["a"][0] = {"x": b'abc'}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        self.assertEqual(list(s["a"])[0]["x"], b'abc')
 | 
				
			||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user