Changeset 823
- Timestamp:
- 03/09/07 22:06:11 (2 years ago)
- Files:
-
- pg8000/trunk/pg8000.py (modified) (4 diffs)
- pg8000/trunk/pg8000-test.py (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
pg8000/trunk/pg8000.py
r822 r823 880 880 self._send(Protocol.Execute(portal, 0)) 881 881 self._send(Protocol.Sync()) 882 exc = None 882 883 while 1: 883 884 msg = self._read_message() … … 886 887 pass 887 888 elif isinstance(msg, Protocol.ReadyForQuery): 888 # ready to move on with life... 889 if exc != None: 890 raise exc 889 891 break 890 892 elif isinstance(msg, Protocol.ErrorResponse): 891 raisemsg.createException()893 exc = msg.createException() 892 894 else: 893 895 raise InternalError("unexpected response") … … 1085 1087 1086 1088 def py_value(v, description, **kwargs): 1089 print repr(v), repr(description) 1087 1090 if v == None: 1088 1091 # special case - NULL value … … 1142 1145 def timestamp_recv(data, **kwargs): 1143 1146 val = struct.unpack("!d", data)[0] 1147 print "timestamp_recv", repr(val), repr(data) 1144 1148 return datetime.datetime(2000, 1, 1) + datetime.timedelta(seconds = val) 1145 1149 pg8000/trunk/pg8000-test.py
r821 r823 7 7 import pg8000 8 8 9 #db = pg8000.Connection(host='joy', user='Mathieu Fenniak', database="software", password="hello", socket_timeout=5)9 db = pg8000.Connection(host='joy', user='pg8000-test', database='pg8000-test', password='pg8000-test', socket_timeout=5) 10 10 #db = pg8000.Connection(host='localhost', user='mfenniak') 11 db = pg8000.Connection(user="mfenniak", unix_sock="/tmp/.s.PGSQL.5432")11 #db = pg8000.Connection(user="mfenniak", unix_sock="/tmp/.s.PGSQL.5432") 12 12 13 print "testing db.execute and error recovery in NoData query" 14 for i in range(1, 3): 15 db.begin() 16 try: 17 db.execute("DROP TABLE t1") 18 db.commit() 19 except pg8000.DatabaseError, e: 20 assert e.args[1] == '42P01' # table does not exist 21 db.rollback() 22 db.begin() 23 24 print "creating test table" 13 25 db.begin() 26 db.execute("CREATE TABLE t1 (f1 int primary key, f2 int not null, f3 varchar(50) null)") 27 db.commit() 14 28 15 db.execute("DROP TABLE t1") 16 db.execute("CREATE TABLE t1 (f1 int primary key, f2 int not null, f3 varchar(50) null)") 29 print "testing db.execute on query, error recovery in on parsing" 30 for i in range(1, 3): 31 db.begin() 32 try: 33 db.execute("SELECT * FROM table_that_does_not_exist") 34 print "error - shouldn't get here" 35 for row in db.iterate_dict(): 36 print "definately shouldn't be here... %r" % row 37 except pg8000.DatabaseError, e: 38 assert e.args[1] == '42P01' # table does not exist 39 db.rollback() 40 db.begin() 17 41 42 print "testing multithreaded prepared statement with arguments" 18 43 # Not the most efficient way to do this. Multiple DB connections would 19 44 # multiplex this insert and make it faster -- we're just testing for thread … … 34 59 35 60 36 print " beginquery..."61 print "testing basic query..." 37 62 db.execute("SELECT * FROM t1") 38 63 for row in db.iterate_dict(): 39 print repr(row) 40 print "end query..." 64 assert row.has_key("f1") and row.has_key("f2") and row.has_key("f3") 41 65 42 #print "begin query..."66 print "testing two queries at once..." 43 67 cur1 = pg8000.Cursor(db) 44 #cur1.execute("SELECT * FROM t1") 45 #s1 = pg8000.PreparedStatement(db, "SELECT * FROM t1 WHERE f1 > $1", int) 46 #i = 0 47 #for row1 in cur1.iterate_dict(): 48 # i = i + 1 49 # print i, repr(row1) 50 # s1.execute(row1['f1']) 51 # for row2 in s1.iterate_dict(): 52 # print "\t", repr(row2) 53 #print "end query..." 68 cur1.execute("SELECT * FROM t1") 69 s1 = pg8000.PreparedStatement(db, "SELECT f1, f2 FROM t1 WHERE f1 > $1", int) 70 i = 0 71 for row1 in cur1.iterate_dict(): 72 assert row1.has_key("f1") and row1.has_key("f2") and row1.has_key("f3") 73 i = i + 1 74 s1.execute(row1['f1']) 75 for row2 in s1.iterate_dict(): 76 assert row2.has_key("f1") and row2.has_key("f2") and not row2.has_key("f3") 54 77 55 print " Beginning type checks..."78 print "beginning type checks..." 56 79 57 80 cur1.execute("SELECT $1", 5) … … 89 112 90 113 cur1.execute("SELECT '2001-02-03 04:05:06.17'::timestamp") 91 assert tuple(cur1.iterate_dict()) == ({'timestamp': datetime.datetime(2001, 2, 3, 4, 5, 6, 170000)},) 114 retval = tuple(cur1.iterate_dict()) 115 print repr(retval) 116 assert retval == ({'timestamp': datetime.datetime(2001, 2, 3, 4, 5, 6, 170000)},) 92 117 93 118 #cur1.execute("SELECT '2001-02-03 04:05:06.17'::timestamp with time zone") … … 98 123 #print repr(tuple(cur1.iterate_dict())) 99 124 100 print "Type checks complete."101 125 126 print "tests complete"
