From 1fddaa856239c01d475301c99131658b5db35f32 Mon Sep 17 00:00:00 2001 From: Federico Di Gregorio Date: Mon, 14 Apr 2008 04:13:07 +0000 Subject: [PATCH] Added a couple of files used for tests. --- sandbox/misc_dbapi_test.py | 45 ++++++++++++++++++++++++++++++++++ sandbox/trigger-commit-fail.py | 44 +++++++++++++++++++++++++++++++++ 2 files changed, 89 insertions(+) create mode 100644 sandbox/misc_dbapi_test.py create mode 100644 sandbox/trigger-commit-fail.py diff --git a/sandbox/misc_dbapi_test.py b/sandbox/misc_dbapi_test.py new file mode 100644 index 00000000..64637d98 --- /dev/null +++ b/sandbox/misc_dbapi_test.py @@ -0,0 +1,45 @@ +#!/usr/bin/env python +""" +Test if the arguments object can be used with both positional and keyword +arguments. +""" + +class O(object): + + def __init__(self, *args, **kwds): + self.args = args + self.kwds = kwds + + def __getitem__(self, k): + if isinstance(k, int): + return self.args[k] + else: + return self.kwds[k] + +o = O('R%', second='S%') + +print o[0] +print o['second'] + + +#------------------------------------------------------------------------------- + +import psycopg2 as dbapi + + +conn = dbapi.connect(database='test') + + + +cursor = conn.cursor() +cursor.execute(""" + + SELECT * FROM location_pretty + WHERE keyname LIKE %s OR keyname LIKE %(second)s + + """, (o,)) + +for row in cursor: + print row + + diff --git a/sandbox/trigger-commit-fail.py b/sandbox/trigger-commit-fail.py new file mode 100644 index 00000000..98b23ae9 --- /dev/null +++ b/sandbox/trigger-commit-fail.py @@ -0,0 +1,44 @@ +import psycopg2 +import traceback + +# Change the table here to something the user can create tables in ... +db = psycopg2.connect('dbname=test') + +cursor = db.cursor() + +print 'Creating tables and sample data' + +cursor.execute(''' + CREATE TEMPORARY TABLE foo ( + id int PRIMARY KEY + )''') +cursor.execute(''' + CREATE TEMPORARY TABLE bar ( + id int PRIMARY KEY, + foo_id int, + CONSTRAINT bar_foo_fk FOREIGN KEY (foo_id) REFERENCES foo(id) DEFERRABLE + )''') +cursor.execute('INSERT INTO foo VALUES (1)') +cursor.execute('INSERT INTO bar VALUES (1, 1)') + +db.commit() + +print 'Deferring constraint and breaking referential integrity' +cursor.execute('SET CONSTRAINTS bar_foo_fk DEFERRED') +cursor.execute('UPDATE bar SET foo_id = 42 WHERE id = 1') + +print 'Committing (this should fail)' +try: + db.commit() +except: + traceback.print_exc() + +print 'Rolling back connection' +db.rollback() + +print 'Running a trivial query' +try: + cursor.execute('SELECT TRUE') +except: + traceback.print_exc() +print 'db.closed:', db.closed