mirror of
				https://github.com/python/cpython.git
				synced 2025-10-26 03:04:41 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			47 lines
		
	
	
	
		
			1.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			47 lines
		
	
	
	
		
			1.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| import sqlite3
 | |
| 
 | |
| class Point(object):
 | |
|     def __init__(self, x, y):
 | |
|         self.x, self.y = x, y
 | |
| 
 | |
|     def __repr__(self):
 | |
|         return "(%f;%f)" % (self.x, self.y)
 | |
| 
 | |
| def adapt_point(point):
 | |
|     return "%f;%f" % (point.x, point.y)
 | |
| 
 | |
| def convert_point(s):
 | |
|     x, y = list(map(float, s.split(";")))
 | |
|     return Point(x, y)
 | |
| 
 | |
| # Register the adapter
 | |
| sqlite3.register_adapter(Point, adapt_point)
 | |
| 
 | |
| # Register the converter
 | |
| sqlite3.register_converter("point", convert_point)
 | |
| 
 | |
| p = Point(4.0, -3.2)
 | |
| 
 | |
| #########################
 | |
| # 1) Using declared types
 | |
| con = sqlite3.connect(":memory:", detect_types=sqlite3.PARSE_DECLTYPES)
 | |
| cur = con.cursor()
 | |
| cur.execute("create table test(p point)")
 | |
| 
 | |
| cur.execute("insert into test(p) values (?)", (p,))
 | |
| cur.execute("select p from test")
 | |
| print("with declared types:", cur.fetchone()[0])
 | |
| cur.close()
 | |
| con.close()
 | |
| 
 | |
| #######################
 | |
| # 1) Using column names
 | |
| con = sqlite3.connect(":memory:", detect_types=sqlite3.PARSE_COLNAMES)
 | |
| cur = con.cursor()
 | |
| cur.execute("create table test(p)")
 | |
| 
 | |
| cur.execute("insert into test(p) values (?)", (p,))
 | |
| cur.execute('select p as "p [point]" from test')
 | |
| print("with column names:", cur.fetchone()[0])
 | |
| cur.close()
 | |
| con.close()
 | 
