Exemple #1
0
 def close(self):
     if self.closed and self._dbapi_connected_flag:
         raise Error("connection already closed",
                     source='CLIENT',
                     creator=self)
     self._dbapi_connected_flag = True
     super().close()
Exemple #2
0
	def execute(self, statement, parameters = ()):
		if self.__portals is None:
			raise Error("cursor is closed",
				source = 'CLIENT', creator = self.database)

		sql, pxf, nparams = self._convert_query(statement)
		if nparams != -1 and len(parameters) != nparams:
			raise TypeError(
				"statement require %d parameters, given %d" %(
					nparams, len(parameters)
				)
			)
		ps = self.database.prepare(sql)
		c = ps.chunks(*pxf(parameters))
		if ps._output is not None and len(ps._output) > 0:
			# name, relationId, columnNumber, typeId, typlen, typmod, format
			self.rowcount = -1
			self.description = tuple([
				(self.database.typio.decode(x[0]), dbapi_type(x[3]),
				None, None, None, None, None)
				for x in ps._output
			])
			self.__portals.insert(0, Portal(c))
		else:
			self.rowcount = c.count()
			if self.rowcount is None:
				self.rowcount = -1
			self.description = None
			# execute bumps any current portal
			if self.__portals:
				del self._portal
		return self
Exemple #3
0
 def close(self):
     if self.__portals is None:
         raise Error("cursor is closed",
                     source='CLIENT',
                     creator=self.database)
     self.description = None
     self.__portals = None
Exemple #4
0
	def close(self):
		if self.closed:
			raise Error(
				"connection already closed",
				source = 'CLIENT',
				creator = self
			)
		super().close()
Exemple #5
0
		def fget(self):
			if self.__portals is None:
				raise Error("access on closed cursor")
			try:
				p = self.__portals[0]
			except IndexError:
				raise InterfaceError("no portal on stack")
			return p
Exemple #6
0
		def fdel(self):
			if self.__portals is None:
				raise Error("cursor is closed",
					source = 'CLIENT', creator = self.database
				)
			try:
				del self.__portals[0]
			except IndexError:
				raise InterfaceError("no portal on stack")
Exemple #7
0
	def callproc(self, proname, args):
		if self.__portals is None:
			raise Error("cursor is closed",
				source = 'CLIENT', creator = self.database)

		p = self.database.prepare("SELECT %s(%s)" %(
			proname, ','.join([
				'$' + str(x) for x in range(1, len(args) + 1)
			])
		))
		self.__portals.insert(0, Portal(p.chunks(*args)))
		return args
Exemple #8
0
	def executemany(self, statement, parameters):
		if self.__portals is None:
			raise Error("cursor is closed",
				source = 'CLIENT', creator = self.database)

		sql, pxf, nparams = self._convert_query(statement)
		ps = self.database.prepare(sql)
		if ps._input is not None:
			ps.load_rows(map(pxf, parameters))
		else:
			ps.load_rows(parameters)
		self.rowcount = -1
		return self
Exemple #9
0
	def setoutputsize(self, sizes, columns = None):
		if self.__portals is None:
			raise Error("cursor is closed",
				source = 'CLIENT', creator = self.database)
Exemple #10
0
	def setinputsizes(self, sizes):
		if self.__portals is None:
			raise Error("cursor is closed",
				source = 'CLIENT', creator = self.database)
Exemple #11
0
	def close(self):
		if self.greentrunk.closed:
			raise Error("connection already closed")
		self.greentrunk.close()