|
|
| version 1.140, 2011/02/17 18:23:58 | version 1.143, 2012/02/15 08:08:42 |
|---|---|
| Line 5 import urllib | Line 5 import urllib |
| import re | import re |
| import string | import string |
| #from pyPgSQL import libpq | #from pyPgSQL import libpq |
| import psycopg2 | |
| from AccessControl import getSecurityManager,Unauthorized | from AccessControl import getSecurityManager,Unauthorized |
| from Products.PageTemplates.ZopePageTemplate import ZopePageTemplate | from Products.PageTemplates.ZopePageTemplate import ZopePageTemplate |
| from Products.PageTemplates.PageTemplateFile import PageTemplateFile | from Products.PageTemplates.PageTemplateFile import PageTemplateFile |
| Line 434 class ZSQLExtendFolder(Folder,Persistent | Line 435 class ZSQLExtendFolder(Folder,Persistent |
| options.replace_table=replace | options.replace_table=replace |
| options.backup_table=backup | options.backup_table=backup |
| options.debug=debug | options.debug=debug |
| logging.debug(options) | |
| if RESPONSE and log_to_response: | if RESPONSE and log_to_response: |
| # set up logging to response as plain text | # set up logging to response as plain text |
| logging.debug("Setting up logging to RESPONSE") | logging.debug("Setting up logging to RESPONSE") |
| Line 993 class ZSQLExtendFolder(Folder,Persistent | Line 994 class ZSQLExtendFolder(Folder,Persistent |
| def ZSQLSimpleSearch(self,query=None,max_rows=1000000): | def ZSQLSimpleSearch(self,query=None,max_rows=1000000): |
| """new simple search""" | """new simple search""" |
| logging.debug("new ZSQLSimpleSearch X %s"%query) | logging.debug("new ZSQLSimpleSearch %s"%query) |
| # get Connection instance | # get Connection instance |
| con = self.getConnectionObj() | con = self.getConnectionObj() |
| # call to get db object | # call to get db object |
| dbc = con() | dbc = con() |
| if getattr(self, 'autocommit', False): | if getattr(self, 'autocommit', False): |
| # force transaction isolation level (for psycopg2 0=autocommit) | # force transaction isolation level (for psycopg2 0=autocommit) |
| logging.debug(" old tilevel=%s"%dbc.tilevel) | |
| dbc.tilevel = 0 | dbc.tilevel = 0 |
| # modified code from ZPsycopgDA.db without _register: | |
| c = dbc.getcursor() | |
| desc = () | |
| r = [] | |
| try: | |
| try: | |
| c.execute(query) | |
| except psycopg2.OperationalError: | |
| #logging.exception("Operational error on connection, closing it.") | |
| try: | |
| # Only close our connection | |
| dbc.putconn(True) | |
| except: | |
| #logging.debug("Something went wrong when we tried to close the pool", exc_info=True) | |
| pass | |
| if c.description is not None: | |
| if max_rows: | |
| r = c.fetchmany(max_rows) | |
| else: | |
| r = c.fetchall() | |
| desc = c.description | |
| dbc.failures = 0 | |
| except StandardError, err: | |
| raise err | |
| res = (dbc.convert_description(desc), r) | |
| else: | |
| logging.debug(" no autocommit") | |
| # just use DA's query method | |
| res = dbc.query(query, max_rows=max_rows) | res = dbc.query(query, max_rows=max_rows) |
| # return result set as Result object with Brains | # return result set as Result object with Brains |
| return Results(res) | return Results(res) |