version 1.140, 2011/02/17 18:23:58
|
version 1.142, 2011/02/23 20:05:51
|
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 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) |
|
|