/Doc/includes/sqlite3/converter_point.py
http://unladen-swallow.googlecode.com/ · Python · 47 lines · 30 code · 11 blank · 6 comment · 0 complexity · 85db6ee667a2fdb55179caaca2ac3d0e MD5 · raw file
- 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 = 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()