예제 #1
0
def typeValuetoStr(s):  #对数据库入库字段值格式化
    if not s:
        return s

    decode_s, dump_s = '', ''
    if isinstance(s, str):  #检测str编码并转成unicode
        try:
            json.loads(s)
        except:
            decode_s = strtodecode(s)
        else:
            decode_s = s  #json的结果直接存数据库

    elif isinstance(s, unicode):
        decode_s = strtodecode(s)
    else:  #非str类型的先转成json格式
        dump_s = json.dumps(s)

    if decode_s:  #转unicode成功
        try:
            rs = decode_s.encode(config.mysql_charset)
        except:
            return decode_s.encode('utf8').replace(
                '\\', '\\\\')  #对数据库指定编码转码失败返回默认utf8编码
        else:
            return rs.replace('\\', '\\\\')
    elif dump_s:  #转unicode失败
        return dump_s.replace('\\', '\\\\')
    else:
        return False
예제 #2
0
def typeValuetoStr(s):			#对数据库入库字段值格式化
	if not s:
		return s

	decode_s,dump_s = '',''
	if isinstance(s, str):		#检测str编码并转成unicode
			try:
				json.loads(s)
			except:
				decode_s = strtodecode(s)
			else:
				decode_s = s 							#json的结果直接存数据库

	elif isinstance(s, unicode):
			decode_s = strtodecode(s)
	else:												#非str类型的先转成json格式
		dump_s = json.dumps(s)

	if decode_s:										#转unicode成功
		try:
			rs = decode_s.encode(config.mysql_charset)
		except:
			return decode_s.encode('utf8').replace('\\','\\\\')	#对数据库指定编码转码失败返回默认utf8编码
		else:
			return rs.replace('\\','\\\\')
	elif dump_s:												#转unicode失败
		return dump_s.replace('\\','\\\\')
	else:
		return False
예제 #3
0
	def setTable(self, table_name='', table_struc=''):
		if not table_name:
			return False
		if not table_struc:
			return False
		try:
			sql = "create table if not exists `%s` %s" % (strtodecode(table_name), strtodecode(table_struc))
			self.sql = sql
			tag = self.cur.execute(sql)
		except:
			print "sql error:%s" % sql
		else:
			return tag
예제 #4
0
 def setTable(self, table_name='', table_struc=''):
     if not table_name:
         return False
     if not table_struc:
         return False
     try:
         sql = "create table if not exists `%s` %s" % (
             strtodecode(table_name), strtodecode(table_struc))
         self.sql = sql
         tag = self.cur.execute(sql)
     except:
         print "sql error:%s" % sql
     else:
         return tag
예제 #5
0
def getNumPage(segnum='', num='', url=''):		#获取号码页详细数据
	if not segnum:
		return False
	if not num:
		return False
	if not url:
		return False

	gevent.sleep(random.randint(10,22)*0.81)	#从此处协程并发

	db_file = './data/mobile_area.db'

	html = catchPage(url)
	if not html:
		print "catch %s num page error!" % num
		print "url:%s\n" % (url)
		with open("./logs/errornum.txt", "a") as f:
			f.write(segnum+','+num+','+url+"\n")
		return False

	#json数据
	try:
		page_temp_dict = json.loads(unquote(html))
	except:
		print segnum+','+num+','+url+",result error convert to dict\n"
		with open('./logs/errorlog.txt','a') as f:
			f.write(segnum+','+num+','+url+",result error convert to dict\n")
		return False
	else:
		try:
			cx = sqlite3.connect(db_file)
			cu = cx.cursor()
		except:
			print "can not find sqlite db file\n"
			with open('./logs/errorlog.txt','a') as f:
				f.write("can not find sqlite db file '%s'\n" % str(db_file))
			return False

		insdata = {}
		#mobile_num
		if page_temp_dict.get('Mobile', False):
			insdata['mobile_num'] = int(page_temp_dict['Mobile'])
		else:
			with open('./logs/errorlog.txt','a') as f:
				f.write(segnum+','+num+','+url+",No matching data\n")
			return False	#无号码
		#mobile_area
		if page_temp_dict.get('Province', False):
			if page_temp_dict['Province'] == u'未知':
				with open('./logs/errorlog.txt','a') as f:
					f.write(segnum+','+num+','+url+",province is weizhi\n")
				return False	#无地区
			if page_temp_dict.get('City', False):
				insdata['mobile_area'] = strtodecode(page_temp_dict['Province']+' '+page_temp_dict['City'])
			else:
				insdata['mobile_area'] = strtodecode(page_temp_dict['Province']+' '+page_temp_dict['Province'])
		else:
			with open('./logs/errorlog.txt','a') as f:
				f.write(segnum+','+num+','+url+",No matching province\n")
			return False	#无地区
		#mobile_type
		if page_temp_dict.get('Corp', False):
			if page_temp_dict.get('Card', False):
				insdata['mobile_type'] = strtodecode(page_temp_dict['Corp']+' '+page_temp_dict['Card'])
			else:
				insdata['mobile_type'] = strtodecode(page_temp_dict['Corp'])
		#area_code
		if page_temp_dict.get('AreaCode', False):
			insdata['area_code'] = strtodecode(page_temp_dict['AreaCode'])
		#post_code
		if page_temp_dict.get('PostCode', False):
			insdata['post_code'] = strtodecode(page_temp_dict['PostCode'])

		if insdata:
			sql = "insert into mobile_area values (?,?,?,?,?,?)"
			cu.execute(sql, (None,insdata['mobile_num'],insdata['mobile_area'],insdata['mobile_type'],insdata['area_code'],insdata['post_code']))

			try:
				cx.commit()		#执行insert
			except:
				with open('./logs/errorlog.txt','a') as f:
					f.write(segnum+','+num+','+url+",insert sqlitdb faild\n")
				return False
			else:
				print "%d write db ok" % insdata['mobile_num']
				return True