python出现memory error_Python中的错误消息“ MemoryError”

...sucessfully added vote# 2281sucessfully added vote# 2282sucessfully added vote# 2283sucessfully added vote# 2284floorvotes_db.py:35:Warning:Datatruncatedforcolumn'vote_value'at row1r['bill ID'],r['last name'],r['vote'])Traceback(most recent call last):File"",line1,inFile"floorvotes_db.py",line67,inaddAllFilesaddFile(file)File"floorvotes_db.py",line61,inaddFileadd(record)File"floorvotes_db.py",line35,inaddr['bill ID'],r['last name'],r['vote'])File"build/bdist.linux-i686/egg/MySQLdb/cursors.py",line166,inexecuteFile"build/bdist.linux-i686/egg/MySQLdb/connections.py",line35,indefaulte rrorhandlerKeyboardInterruptimportos,re,datetime,string# DataDIR='/mydir'tfn=r'C:\Documents and Settings\Owner\Desktop\data.txt'rgxs={'bill number':{'rgx':r'(A|S)[0-9]+-?[A-Za-z]* {50}'}}# Compile rgxs for speedinessforrgxinrgxs:rgxs[rgx]['rgx']=re.compile(rgxs[rgx]['rgx'])splitter=rgxs['bill number']['rgx']# Gutsclassfloor_vote_file:def__init__(self,fn):self.iterdata=(strforstrinsplitter.split(open(fn).read())ifstrandstr<>'A'andstr<>'S')defiterVotes(self):forrecordinself.data:ifrecord:yieldbillvote(record)classbillvote(object):def__init__(self,section):self.data=[line.strip()forlineinsection.splitlines()]self.summary=self.data[1].split()self.vtlines=self.data[2:]self.date=self.date()self.year=self.year()self.votes=self.parse_votes()self.record=self.record()# Parse summary datedefdate(self):d=[int(str)forstrinself.summary[0].split('/')]returndatetime.date(d[2],d[0],d[1]).toordinal()defyear(self):returndatetime.date.fromordinal(self.date).yeardefsession(self):"""arg: 2-digit year intreturns: 4-digit session"""defodd():returndivmod(self.year,2)[1]==1ifodd():returnstr(string.zfill(self.year,2))+\str(string.zfill(self.year+1,2))else:returnstr(string.zfill(self.year-1,2))+\str(string.zfill(self.year,2))defhouse(self):ifself.summary[2]=='Assembly':return1ifself.summary[2]=='Senate':return2defsplt_v_line(self,line):return[stringforstringinline.split(' ')ifstring<>'']defsplt_v(self,line):returnline.split()defprse_v(self,item):"""takes split_vote item"""return{'vote':unicode(item[0]),'last name':unicode(' '.join(item[1:]))}# Parse votes - maindefparse_votes(self):nested=[[self.prse_v(self.splt_v(vote))forvoteinself.splt_v_line(line)]forlineinself.vtlines]flattened=[]forlstinnested:fordctinlst:flattened.append(dct)returnflattened# Useful data objectsdefrecord(self):return{'date':unicode(self.date),'year':unicode(self.year),'session':unicode(self.session()),'house':unicode(self.house()),'bill ID':unicode(self.summary[1]),'ayes':unicode(self.summary[5]),'nays':unicode(self.summary[7]),}defiterRecords(self):forvoteinself.votes:r=self.record.copy()r['vote']=vote['vote']r['last name']=vote['last name']yieldrtest=floor_vote_file(tfn)importMySQLdbasdbapi2importfloorvotes_parseasvimportos# Initial database crapdb=dbapi2.connect(db=r"db",user="user",passwd="XXXXX")cur=db.cursor()ifdbandcur:print"\nConnected to db.\n"defcommit():db.commit()defext():cur.close()db.close()print"\nConnection closed.\n"# DATADIR='/mydir'files=[DIR+fnforfninos.listdir(DIR)iffn.startswith('fvote')]# Add stuffdefadd(r):"""add a record"""cur.execute(u'''INSERT INTO ny_votes (vote_house, vote_date, vote_year, bill_id,member_lastname, vote_value) VALUES(%s , %s , %s ,%s , %s , %s )''',(r['house'],r['date'],r['year'],r['bill ID'],r['last name'],r['vote']))#print "added", r['year'], r['bill ID']defcrt():"""create table"""SQL="""CREATE TABLE ny_votes (openleg_id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,vote_house int(1), vote_date int(5), vote_year int(2), bill_id varchar(8),member_lastname varchar(50), vote_value varchar(10));"""cur.execute(SQL)print"\nCreate ny_votes.\n"defrst():SQL="""DROP TABLE ny_votes"""cur.execute(SQL)print"\nDropped ny_votes.\n"crt()defaddFile(fn):"""parse and add all records in a file"""n=0forvotesinv.floor_vote_file(fn).iterVotes():forrecordinvotes.iterRecords():add(record)n+=1print'sucessfully added vote # '+str(n)defaddAllFiles():forfileinfiles:addFile(file)if__name__=='__main__':rst()addAllFiles()

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值