ORACLE Spatial到SDE空间数据操作

ORACLE Spatial到SDE

刚刚接触python不就,关于Oracle spatial 到SDE的空间数据操作,基于简单的点线面的。先直接插入基类文件。
#coding:utf-8
import cx_Oracle
import arcpy
from arcpy import env
class cxOracle:
‘’‘tns的取值tnsnames.ora对应的配置项的值,
如:tns = ‘(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=10.16.18.23)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=MYDB)))’ ‘’’
def init(self ,uname, upwd,tns ):
self._uname = uname
self._upwd = upwd
self._tns = tns
self._conn = None
self._ReConnect()

def _ReConnect(self):
	if not self._conn:
		self._conn = cx_Oracle.connect(self. _uname, self ._upwd, self._tns)
	else:
		pass

def __del__(self ): 
	if self._conn:
		self._conn.close()
		self._conn = None

def _NewCursor(self):
	cur = self._conn.cursor()
	if cur:
		return cur
	else:
		print "#Error# Get New Cursor Failed."
		return None

def _DelCursor(self, cur):
	if cur:
		cur.close()

def _PermitedUpdateSql(self, sql):
	rt  = True
	lrsql = sql.lower()
	sql_elems = [lrsql.strip().split()]
	# update和delete最少有四个单词项
	if len( sql_elems) < 4 : 
		rt = False
	# 更新删除语句,判断首单词,不带where语句的sql不予执行
	elif sql_elems[0] in [ 'update', 'delete']: 
		if 'where' not in sql_elems : 
			rt = False
	return rt

def Query(self, sql, nStart = 0, nNum = -1):
	'''query data form Oracle'''
	print('123')
	rt = []
	#get cursor
	cur = self._NewCursor()
	if not cur:
		return rt
	#查询到列表
	cur.execute(sql)
	if (nStart == 0) and (nNum == 1 ):
		rt.append(cur.fetchone())
	else:
		rs = cur.fetchall()
		if nNum == -1:
			rt.extend(rs[nStart])
		else:
			rt.extend(rs[nStart:nStart + nNum])
	self._DelCursor(cur)
	return rt

def queryClobBy(self,sql,nameParams={}):
	cur = self._NewCursor()
	if len(nameParams):
		cur.execute(sql,nameParams)
	else:
		cur.execute(sql)
	str_list = []
	for i in cur:
		# text = i[0].read()
		text = i[0]
		str_list.append(str(text))
	return ''.join(str_list)

de
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值