月度归档:2016年10月

Python学习笔记20161023

学习到Python的特殊方法一节,看到以下例子,开始理解不了,后来懵懵懂懂理解是__getitem__、__setitem__均为Python类特殊方法,ArithmeticSequence的实例s,s[4]等同于s.__getitem__(4),而s[4]=2等同于s.__setitem__(4,2),由s[4]=2前后”print len(s.changed)”输出的值为证。
def checkIndex(key):
if not isinstance(key,(int,long)):raise TypeError
if key<0:raise IndexError
class ArithmeticSequence:
def __init__(self,start=0,step=1): 继续阅读

Mysql 使用Insert into select where not exists语句避免插入重复记录

往生产环境更新数据时,往往会有一些重复的记录存在,为了避免插入重复记录,我常常使用的语句是“insert into select where not exists”,一般是先把需要更新的数据导入tmp临时数据库,然后再插入线上数据库,这样可以最大程度避免影响业务系统的正常运转,并顺利使用以上语句。
这里举例的线上数据表是oming,临时数据表是oming_tmp(创建该表时使用语句“create table oming_tmp like oming;”)
字段有:id(自增),addr,lng,lat,time(update时自动更新时间)
1.多条记录导入:
insert into oming(addr,lng,lat) select addr,lng,lat from oming_tmp where not exists(select * from oming where oming.lng=oming_tmp.lng and oming.lat=oming_tmp.lat);
通过lng,lat字段验证是否重复。
2.单条记录导入:
insert into oming(addr,lng,lat) select ‘辽宁省沈阳市青年大街华润中心’,’123.441919′,’41.7809′ from oming_tmp where not exists(select * from oming where oming.lng=’123.441919′ and oming.lat=’41.7809′);