
db = u'gnumed_v20'		# a database configured "alter database %s set default_transaction_read_only to on"
user = 'gm-dbo'			# a user with CREATE DATABASE powers



cmd_def_tx_ro = "SELECT upper(source), name, upper(setting) FROM pg_settings WHERE name = 'default_transaction_read_only'"
cmd_create_db = "create database %s_copy template %s" % (db, db)


import sys
import psycopg2


conn = psycopg2.connect(dbname = db, user = user)
print 'conn:', conn
print 'readonly:', conn.readonly
print 'autocommit:', conn.autocommit
conn.autocommit = False
conn.readonly = False					# <============ comment out for success
conn.autocommit = True
print 'autocommit now:', conn.autocommit
conn.readonly = False
print 'readonly now:', conn.readonly
curs = conn.cursor()
curs.execute(cmd_def_tx_ro)
print 'should show DEFAULT_TRANSACTION_READ_ONLY set to ON'
print curs.fetchall()
curs.close()
conn.commit()
print 'the following CREATE DATABASE should fail'
curs = conn.cursor()
try:
	curs.execute(cmd_create_db)
except psycopg2.InternalError as ex:
	print 'SQL failed:'
	print ex

print 'shutting down'

curs.close()
conn.rollback()
conn.close()
