예제 #1
0
파일: center.py 프로젝트: fairy-rui/oj
 def update_contest_statistics(result):
     """
     更新比赛统计数据
     :param result:
     :return:
     """
     count = db.select_int('select count(*) from t_ranking where contest_id=? and problem_id=? and username=?',
                           result['contest_id'], result['problem_id'], result['user_id'])
     if count == 0:
         record = dict(contest_id=result['contest_id'], problem_id=result['problem_id'], username=result['user_id'])
         db.insert('t_ranking', **record)
     p_time = db.select_one('select AC_time from t_ranking where contest_id=? and problem_id=? and username=?',
                            result['contest_id'], result['problem_id'], result['user_id']).get('AC_time')
     if p_time == 0:  # 本题还没有AC
         if result['result'] == configs.result_code.AC:  # 本题初次AC
             with db.connection():
                 submit_time = db.select_one('select submit_time from t_submission where submission_id=?',
                                             result['solution_id']).get('submit_time')   # 提交时间, datetime类型
                 date_time = db.select_one('select contest_date, start_time from t_contest where contest_id=?',
                                           result['contest_id'])
                 c_date = date_time.get('contest_date')  # 比赛开始日期, date类型
                 c_time = date_time.get('start_time')    # 比赛开始时间, timedelta类型
                 # 转换为比赛开始时间, datetime类型
                 contest_time = datetime.strptime(c_date.strftime('%Y-%m-%d %H:%M:%S'), '%Y-%m-%d %H:%M:%S') + c_time
                 ac_time = (submit_time - contest_time).total_seconds() / 60  # 本题初次AC所用时间, 单位为分钟, float类型
                 with db.transaction():
                     db.update('update t_ranking set AC_time=? where contest_id=? and problem_id=? and username=?',
                               ac_time, result['contest_id'], result['problem_id'], result['user_id'])   # AC题目所用时间
         else:
             db.update('update t_ranking set wrong_submit = wrong_submit + 1 where contest_id=? and problem_id=? '
                       'and username=?', result['contest_id'], result['problem_id'], result['user_id'])
예제 #2
0
파일: orm.py 프로젝트: BoomTree/scientic
 def select_one(cls, where, *args):
     '''
     Find by where clause and return one result. If multiple results found, 
     only the first one returned. If no result found, return None.
     '''
     d = db.select_one('select * from %s %s' % (cls.__table__, where), *args) if where else \
         db.select_one('select * from %s' % cls.__table__)
     return cls(**d) if d else None
예제 #3
0
파일: orm.py 프로젝트: BoomTree/scientic
 def select_one(cls, where, *args):
     '''
     Find by where clause and return one result. If multiple results found, 
     only the first one returned. If no result found, return None.
     '''
     d = db.select_one('select * from %s %s' % (cls.__table__, where), *args) if where else \
         db.select_one('select * from %s' % cls.__table__)
     return cls(**d) if d else None
예제 #4
0
 def get(cls,pk):
      """
      Get by primary key
      """
      d = db.select_one('select * from %s where %s=?' % (cls.__table__,
                        cls.__primary_key__.name),pk)
      return cls(**d) if d else None
예제 #5
0
파일: orm.py 프로젝트: Xu-Guo/python
 def find_first(cls, where, *args):
     """
     Find by where clause and return one result. If multiple results found, 
     only the first one returned. If no result found, return None.
     """
     d = db.select_one("select * from %s %s" % (cls.__table__, where), *args)
     return cls(**d) if d else None
예제 #6
0
파일: orm.py 프로젝트: cnu4/awesome-blog
	def find_first(cls, where, *args):
		'''
		Find by where clause and return one result. if there are multiple found,
		only the first one returned.
		'''
		d = db.select_one('select * from %s %s' % (cls.__table__, where), *args)
		return cls(**d) if d else None
예제 #7
0
파일: orm.py 프로젝트: jfbcb/learnpy
    	class Model(dict):
    		"""docstring for Model"""

    		__metaclass__ = ModelMetaclass

    		def __init__(self,**kw):
    			super(Model,self).__init__(**kw)

    		def __getattr__(self,key):
    			try:
    				return self[key]
    			except KeyError:
    				raise AttributeError(r"'Dict' object has no attribute '%s'" % key)

    		def __setattr__(self,key,value):

    			self[key] = value

    		@classmethod
    		def get(cls,pk):
    			d = db.select_one('select * from %s where %s=?' % (cls.__table__,cls.__primary_key__.name),pk)
    			return cls(**d) if d else None

    		@classmethod
    		def find_first(cls,where *args):

    			d= db.select_one('select * from %s %s ' % (cls.__table__,where),*args)	
    			return cls(**d) if d else None
예제 #8
0
	def find_first(cls, where, *args):
		"""
		通过where 语句进行条件查询,返回1个查询结果。如果有多个查询结果
		仅取第一个,如果没有结果,则返回None
		"""
		d = db.select_one('select * from %s %s' % (cls.__table__, where), *args)
		return cls(**d) if d else None
예제 #9
0
파일: orm.py 프로젝트: lsytj0413/learn-note
 def find_first(cls, where, *args):
     """
     查找一条记录
     """
     d = db.select_one('select * from %s %s' % (cls.__table__, where),
                       *args)
     return cls(**d) if d else None
예제 #10
0
 def post(self):
     username = self.get_secure_cookie("username")
     # 检查是否登录
     if username is None:
         data = {'status':False, 'msg':'您尚未登录'}
         json_result = json.dumps(data , ensure_ascii=False)     # 把python对象编码成json格式的字符串
         self.write(json_result)
         return
     # 获取post数据
     recordDate = self.get_argument('historyDate', '')
     data = {'status':False, 'msg':'该日期无记录'}
     sql = "select * from `ofRecord` where username=? and recordDate=? "
     res = db.select_one(sql, username, recordDate)
     if res :                         # 查找成功
         data['status'] = True
         data['msg']    = '获取成功'
         info = {}
         info['username'] = username
         # int值不需要编码
         info['recordDate']    = res['recordDate'].encode("utf8")
         info['duration']      = res['duration']
         info['distance']      = res['distance']
         info['calorie']       = res['calorie']
         info['target']        = res['target']
         data['info']     = info
     json_result = json.dumps(data , ensure_ascii=False)     # 把python对象编码成json格式的字符串
     self.write(json_result)
예제 #11
0
 def get(cls, pk):
     '''
     Get by primary key.
     '''
     d = db.select_one('select * from %s where %s=?' %
                       (cls.__table__, cls.__primary_key__.name), pk)
     return cls(**d) if d else None
예제 #12
0
 def post(self):
     # 获取cookie保证用户已登录
     username = self.get_secure_cookie("username")
     # 检查是否登录
     if username is None:
         data = {'status':False, 'msg':'您尚未登录'}
         json_result = json.dumps(data , ensure_ascii=False)     # 把python对象编码成json格式的字符串
         self.write(json_result)
         return
     # 获取post数据
     recordDate = self.get_argument('recordDate', '')
     duration   = int(self.get_argument('duration', '0'))
     distance   = float(self.get_argument('distance', '0'))
     calorie    = int(self.get_argument('calorie', '0'))
     target     = float(self.get_argument('target', '0'))
     data = {'status':False, 'msg':''}
     sql = "select id from `ofRecord` where username=? and recordDate=?"
     res = db.select_one(sql, username, recordDate)
     if res is not None :                # 已上传过,更新信息
         recordID = res['id']
         sql = "update `ofRecord` set recordDate=?, duration=?, distance=?, calorie=?, target=? where id=? "
         res = db.update(sql, recordDate, duration, distance, calorie, target, recordID)
     else :                              # 未上传过,插入信息
         table = "ofRecord"
         kw = {"username":username, "recordDate":recordDate, "duration":duration, "distance":distance, "calorie":calorie, "target":target}
         res = db.insert(table, **kw)
     if res :       # 修改成功
         data['status'] = True
         data['msg']    = '修改成功'
     json_result = json.dumps(data , ensure_ascii=False)     # 把python对象编码成json格式的字符串
     self.write(json_result)
예제 #13
0
파일: orm.py 프로젝트: rsj217/python-webapp
 def find_first(cls, where, *args):
     """ 查询符合条件第一条记录
         where WHERE 条件语句
         *args 条件语句的参数
     """
     d = db.select_one("SELECT * FROM %s %s" % (cls.__table__, where), *args)
     return cls(**d) if d else None
예제 #14
0
파일: models.py 프로젝트: Chaozz/ORMini
 def get_first(cls, **kwargs):
     """Get by attribute, return only the first result"""
     if len(kwargs) != 1:
         raise TypeError("invalid number of attributes")
     sql = 'select * from %s where %s=?' % (cls.__table_name__,
                                            kwargs.keys()[0])
     return cls(**db.select_one(sql, kwargs.values()[0]))
예제 #15
0
def get_user(username):
    try:
        formattedUsername = format_username(username)
        return select_one('user',('username','password'), 'username',formattedUsername)
    except Exception as e:
        logging.error(traceback.format_exc())
        print("Failed to get user")
예제 #16
0
    def post(self):
        username = self.get_argument('email', '')
        birthday = self.get_argument('birthday', '')
        height   = self.get_argument('height', '')
        weight   = self.get_argument('weight', '')

        date     = self.get_argument('date', '')
        result   = self.get_argument('result', '')
        # 默认为修改失败
        data = {'status':101, }
        # 修改用户的最新身高体重
        sql = "update `ofUser` set birthday=?, height=?, weight=? where username=? "
        db.update(sql, birthday, height, weight, username)
        # 问卷结果
        sql = "select * from `ofQuestionResult` where username=? and date=? "
        res = db.select_one(sql, username, date)
        # 今天已经测试过
        if res:
            sql = "update `ofQuestionResult` set birthday=?, height=?, weight=?, result=? where username=? and date=? "
            res = db.update(sql, birthday, height, weight, result, username, date)
        # 今天未测试过
        else:
            table = "ofQuestionResult"
            kw = {"username":username, "birthday":birthday, "height":height, "weight":weight, "date":date, "result":result}
            res = db.insert(table, **kw)
        data['status'] = 100
        json_result = json.dumps(data , ensure_ascii=False)     # 把python对象编码成json格式的字符串
        self.write(json_result)
예제 #17
0
 def post(self):
     username     = self.get_argument('email', '')
     date         = self.get_argument('date', '')
     heighScore   = self.get_argument('heighScore', '')
     factScore    = self.get_argument('factScore', '')
     exerciseTime = self.get_argument('exerciseTime', '')
     level        = self.get_argument('level', '')
     explosive    = self.get_argument('explosive', '')
     endurance    = self.get_argument('endurance', '')
     exerciseData = self.get_argument('exerciseData', '')
     scoreData    = self.get_argument('scoreData', '')
     # 默认为修改失败
     data = {'status':101, }
     sql = "select * from `ofRecord` where username=? and date=? "
     res = db.select_one(sql, username, date)
     # 已有,则覆盖
     if res:
         sql = "update `ofRecord` set heighScore=?, factScore=?, exerciseTime=?, level=?, explosive=?, endurance=?, exerciseData=?, scoreData=? where username=? and date=? "
         res = db.update(sql, heighScore, factScore, exerciseTime, level, explosive, endurance, exerciseData, scoreData, username, date)
     # 没有,则插入
     else:
         table = "ofRecord"
         kw = {"username":username, "date":date, "heighScore":heighScore, "factScore":factScore, "exerciseTime":exerciseTime, "level":level, "explosive":explosive, "endurance":endurance, "exerciseData":exerciseData, "scoreData":scoreData}
         res = db.insert(table, **kw)
     data['status'] = 100
     json_result = json.dumps(data , ensure_ascii=False)     # 把python对象编码成json格式的字符串
     self.write(json_result)
예제 #18
0
 def find_first(cls,where,*args):
 	'''
 	Find by where clause and return one result ,if multiple results found,
 	only the first one returned ,if no result found,return None
 	'''
 	d = db.select_one('select * from %s %s' %(cls.__table__,where),*args)
 	return cls(**d) if d else None
예제 #19
0
 def find_first(cls, where, *args):
     """
     Find by where clause and return one result. If multiple results found,
     only the first one returned. If no result found, return None.
     """
     d = db.select_one('select * from %s %s' % (cls.__table__, where), *args)
     return cls(**d) if d else None
예제 #20
0
파일: orm.py 프로젝트: Xu-Guo/python
 def get(cls, pk):
     """
     Get by primary key.
     """
     print cls
     d = db.select_one("select * from %s where %s=?" % (cls.__table__, cls.__primary_key__.name), pk)
     return cls(**d) if d else None
예제 #21
0
 def find_first(cls, where, *args):
     """
     通过where语句进行条件查询,返回1个查询结果。如果有多个查询结果
     仅取第一个,如果没有结果,则返回None
     """
     d = db.select_one('select * from %s %s' % (cls.__table__, where), *args)
     return cls(**d) if d else None
예제 #22
0
파일: orm.py 프로젝트: comonda/learngit
    def find_first(cls, where, *args):
        '''


        '''
        d = db.select_one('select * from %s %s' % (cls.__table__, where), *args)
        return cls(**d) if d else None
예제 #23
0
 def find_first(cls, where, *args):
     '''
     Find by where clause and return one result. If multiple results found,
     only the first one returned. If no result found, return None.
     '''
     d = db.select_one('SELECT * FROM %s %s' % (cls.__table__, where),
                       *args)
     return cls(**d) if d else None
예제 #24
0
    def test_database_operations(self):
        #initialization of engine
        db.create_engine('test.db')
        #create Table
        db.update('drop table if exists User')
        db.update('create table User(id int primary key, name varchar(20),password varchar(20),gender varchar(8))')
        #insert
        r1 = db.insert('User',id=db.get_id(),name='user1',password='******',gender='male')
        r2 = db.insert('User',id=db.get_id(),name='user2',password='******',gender='female')
        r3 = db.insert('User',id=db.get_id(),name='user3',password='******',gender='male')
        self.assertEquals(r1,1)
        self.assertEquals(r2,1)
        self.assertEquals(r3,1)

        
        #test select
        r4 = db.select_one('select name from User where gender=?','male')
        r5 = db.select_all('select name from User where gender=?','male')

        self.assertIsInstance(r4,dict)
        self.assertIsInstance(r5,list)
        
        r6 = db.select_one('select name from User where gender=?','asldfkj')
        r7 = db.select_all('select name from User where gender=?','asldfkj')

        self.assertIsNone(r6)
        self.assertEquals(r7,[])
        
        #test update
        r8 = db.update('update User SET gender=? where name=?','male','user1')
        r9 = db.update('update User SET gender=? where name=?','male','asdfas')
        r10 = db.update('update User SET name =? where gender=?','haha','male')

        self.assertEquals(r8,1)
        self.assertEquals(r9,0)
        self.assertEquals(r10,2)
    
        #test transactions
        with db.transaction():
            db.insert('User',id=db.get_id(),name='user5',password='******',gender='female')
            db.insert('User',id=db.get_id(),name='user5',password='******',gender='male')

        r12 = db.select_all('select * from User where name=?','user5')
        self.assertEquals(len(r12),2)
        
        db.engine = None
예제 #25
0
파일: orm.py 프로젝트: SimonCZW/MySimpleWeb
 def find_first(cls, where='', *args):
     """
     where语句条件查询,返回第一个
     用法: Class.find_first(where)
     """
     d = db.select_one('select * from %s %s' % (cls.__table__, where),
                       *args)
     return cls(**d) if d else None
예제 #26
0
 def get(cls, pk):
     '''
     根据主键获取数据
     :param pk:
     :return:
     '''
     d = db.select_one('select * from %s where %s=?' % (cls.__table__, cls.__primary_key__.name), pk)
     return cls(**d) if d else None
예제 #27
0
 def get(cls, pk):
     '''
     Get by primary key.
     '''
     d = db.select_one(
         'SELECT * FROM %s WHERE %s=?' %
         (cls.__table__, cls.__primary_key__.name), pk)
     return cls(**d) if d else None
예제 #28
0
파일: orm.py 프로젝트: alex-my/python-learn
 def get(cls, pk):
     """
     get by primary key
     :param pk:
     :return:
     """
     result = db.select_one('select * from %s where %s=?' % (cls.__table__, cls.__primary_key__.name), pk)
     return cls(**result) if result else None
예제 #29
0
파일: orm.py 프로젝트: bupt075225/xilingxue
 def find_first(cls, where, *args):
     """
     条件查询,返回一个查询结果,如果查询到多个结果,也只返回第一个。
     如果没有查询到结果返回None
     """
     d = db.select_one('select * from %s %s' % (cls.__table__, where),
                       *args)
     return cls(**d) if d else None
예제 #30
0
 def find_by_pk(cls, pk):
     """
     通过主键查找
     :param pk: 主键值
     :return: Model类型的对象或者None
     """
     d = db.select_one('select * from `%s` where %s=?' % (cls.__table__, cls.__primary_key__.name), pk)
     return cls(**d) if d else None
예제 #31
0
 def get(cls, pk):  #cls参数无需传入,cls就是User,调用就是User.get(pk)
     '''
     Get by primary key.
     '''
     d = db.select_one(
         'select * from %s where %s=?' %
         (cls.__table__, cls.__primary_key__.name), pk)
     return cls(d) if d else None  #cls(d)等价于User(d),d 是个dict
예제 #32
0
    def get(cls, pk):
        '''
		Get by primary key
		'''
        d = db.select_one(
            'select * from `%s` where %s=?' %
            (cls.__table__, cls.__primary_key__.name), pk)
        return cls(**d) if d else None
예제 #33
0
파일: orm.py 프로젝트: silentsee/blog
 def find_first(cls, where, *args):
     """
     User.find_first('where id=?', 9999)
     :return cls() or None
     """
     r = db.select_one('select * from %s %s' % (cls.__table__, where),
                       *args)
     return cls(**r) if r else None
예제 #34
0
 def get(cls, key_name, key_value):
     """
     Get by primary/unique key.
     """
     d = db.select_one('select * from %s where %s=?' % (cls.__table__, key_name), key_value)
     if not d:
         # TODO: change to logging?
         raise AttributeError("Can't find in [%s] where %s=[%s]" % (cls.__table__, key_name, key_value))
     return cls(**d) if d else None
예제 #35
0
파일: orm.py 프로젝트: ccccqyc/blog
 def find_first(cls, where, *args):
     '''
     通过where语句进行条件查询,返回1个查询结果。如果有多个查询结果
     仅取第一个,如果没有结果,则返回None        
     Find by where clause and return one result. If multiple results found, 
     only the first one returned. If no result found, return None.
     '''
     d = db.select_one('select * from %s %s' % (cls.__table__, where), *args)
     return cls(**d) if d else None
예제 #36
0
파일: orm.py 프로젝트: zreox/webapp-python
 def find_first(cls, where, *args):
     '''
     通过 where 语句进行条件查询,返回 1 个 查询结果
     如有多个结果,仅取第一个;如没有结果,返回 None
     Like 'select * from table where arg=%s'
     '''
     d = db.select_one('select * from %s %s' % (cls.__table__, where),
                       *args)
     return cls(**d) if d else None
예제 #37
0
파일: orm.py 프로젝트: edwingoo/mywebapp
 def find_first(cls, where, *args):
     """
     find one ,if get many, only one
     :param where:
     :param args:
     :return:
     """
     d = db.select_one('select * from `%s` %s' % (cls.__table__, where), *args)
     return cls(**d) if d else None
예제 #38
0
파일: orm.py 프로젝트: boisde/Greed_Island
 def get(cls, key_name, key_value):
     """
     Get by primary/unique key.
     """
     d = db.select_one('select * from %s where %s=?' % (cls.__table__, key_name), key_value)
     if not d:
         # TODO: change to logging?
         raise AttributeError("Can't find in [%s] where %s=[%s]" % (cls.__table__, key_name, key_value))
     return cls(**d) if d else None
예제 #39
0
파일: orm.py 프로젝트: silentsee/blog
 def get(cls, primary_key):
     """
     返回cls的对象
     """
     # return db.select_one('select * from %s where %s =?' % (cls.__table__, cls.__primary_key__.name), primary_key)
     r = db.select_one(
         'select * from %s where %s =?' %
         (cls.__table__, cls.__primary_key__.name), primary_key)
     return cls(**r) if r else None
예제 #40
0
파일: orm.py 프로젝트: faylau/MessageBoards
    def get(cls, pk):
        '''
		@summary: 通过primary_key从表中查询
		'''
        d = db.select_one(
            'select * from %s where %s=?' %
            (cls.__table__, cls.__primary_key__.name), pk)
        # 将查询结果转换成一个Model子类,并返回。
        return cls(**d) if d else None
예제 #41
0
 def find_first(cls, where, *args):
     """
     通过where clause和条件args查找,并返回一个Model类型的对象。
     如果查询结果有多个,则返回第一个。如果没有查询结果,则返回None。
     :param where: where clause条例
     :return: Model类型的对象或者None
     """
     d = db.select_one('select * from `%s` %s' % (cls.__table__, where), *args)
     return cls(**d) if d else None
예제 #42
0
파일: orm.py 프로젝트: JZ10UJS/my_web_frame
 def get(cls, **kw):
     sql = 'select * from `%s` where ' % cls.__table__
     tmp = []
     names, values = zip(*kw.items())
     for name in names:
         tmp.append('%s=?' % name)
     sql += ' and '.join(tmp)
     d = db.select_one(sql, *values)
     return cls(**d)
예제 #43
0
 def get(cls, pk):
     '''
     根据主键获取数据
     :param pk:
     :return:
     '''
     d = db.select_one(
         'select * from %s where %s=?' %
         (cls.__table__, cls.__primary_key__.name), pk)
     return cls(**d) if d else None
예제 #44
0
 def find_first(cls, where,
                *args):  #where形如 'id=?'  , 调用如:User.find_first(id=?, 100)
     '''
     Find by where clause and return one result. If multiple results found, 
     only the first one returned. If no result found, return None.
     '''
     #d = db.select_one('select * from ? ?' % (cls.__table__, where), *args)也是可以的
     d = db.select_one('select * from %s %s' % (cls.__table__, where),
                       *args)
     return cls(d) if d else None  #cls(d)等价于User(d),d 是个dict
예제 #45
0
파일: orm.py 프로젝트: ccccqyc/Python
 def find_first(cls, where, *args):
     '''
     通过where语句进行条件查询,返回1个查询结果。如果有多个查询结果
     仅取第一个,如果没有结果,则返回None        
     Find by where clause and return one result. If multiple results found, 
     only the first one returned. If no result found, return None.
     '''
     d = db.select_one('select * from %s %s' % (cls.__table__, where),
                       *args)
     return cls(**d) if d else None
예제 #46
0
    def find_first(cls, where, *args):
        '''
        根据条件查询一条记录,如果得到多条,则只取第一条
        :param where:
        :param args:
        :return:
        '''

        d = db.select_one('select * from %s %s' % (cls.__table__, where), *args)
        return cls(**d) if d else None
예제 #47
0
 def find_first(cls, cols, where, *args):
     """
     Find by where clause and return one result. If multiple results found, 
     only the first one returned. If no result found, return None.
     """
     d = db.select_one(
         'select %s from %s %s' % (cols, cls.__table__, where), *args)
     if cols.find(',') == -1 and cols.strip() != '*':
         return d.values()[0] if d else None
     return cls(**d) if d else None
예제 #48
0
파일: orm.py 프로젝트: hazelor/COO_new
    def get(cls, pk, ** kwargs):
        '''
        Get by primary key.
        '''
        if kwargs.has_key('sub_name'):
            sub_name = kwargs['sub_name']
        else:
            sub_name = ""

        d = db.select_one('select * from %s%s where %s=?' % (cls.__table__, sub_name,  cls.__primary_key__.name), pk)
        return cls(**d) if d else None
예제 #49
0
파일: center.py 프로젝트: fairy-rui/oj
 def _get_code(solution_id, pro_lang):
     """
     从数据库获取代码并写入work目录下对应的文件
     :param solution_id:
     :return:
     """
     file_name = {
         'c': 'main.c',
         'c++': 'main.cpp',
         'java': 'Main.java',
         'ruby': 'main.rb',
         'perl': 'main.pl',
         'pascal': 'main.pas',
         'go': 'main.go',
         'lua': 'main.lua',
         'python2': 'main.py',
         'python3': 'main.py',
         'haskell': 'main.hs'
     }
     code = db.select_one('select source from t_submission where submission_id=?', solution_id).get('source')
     if code is None:
         logging.error('cannot get code of runid %s' % solution_id)
         return False
     try:
         work_path = os.path.join(configs.oj.work_dir, str(solution_id))
         PutTask._low_level()
         os.mkdir(work_path)
     except OSError as e:
         if str(e).find('exist') > 0:    # 文件夹已经存在
             pass
         else:
             logging.error(e)
             return False
     try:
         real_path = os.path.join(configs.oj.work_dir, str(solution_id), file_name[pro_lang])
     except KeyError as e:
         logging.error(e)
         return False
     try:
         PutTask._low_level()
         f = codecs.open(real_path, 'w')
         try:
             f.write(code)
         except:
             logging.error('%s not write code to file' % solution_id)
             return False
         finally:
             f.close()
     except OSError as e:
         logging.error(e)
         return False
     size = os.path.getsize(real_path)
     db.update('update t_submission set code_length=? where submission_id=?', size, solution_id)
     return True
예제 #50
0
파일: task.py 프로젝트: 00nanhai/miniweibo
def set_task_result(task_id, success, task_result=''):
    task = db.select_one('select id, status, max_retry, retried from tasks where id=?', task_id)
    kw = dict()
    if success:
        kw['status'] = _DONE
        kw['task_result'] = task_result
    else:
        retried = task.retried + 1
        kw['retried'] = retried
        kw['status'] = _ERROR if task.retried >= task.max_retry else _PENDING
    db.update_kw('tasks', 'id=?', task_id, **kw)
예제 #51
0
파일: orm.py 프로젝트: hazelor/COO_new
    def find_first(cls, where, *args, ** kwargs):
        '''
        Find by where clause and return one result. If multiple results found,
        only the first one returned. If no result found, return None.
        '''
        if kwargs.has_key('sub_name'):
            sub_name = kwargs['sub_name']
        else:
            sub_name = ""

        d = db.select_one('select * from `%s%s` %s' % (cls.__table__, sub_name, where), *args)
        return cls(**d) if d else None
예제 #52
0
 def post(self):
     username = self.get_argument('email', '')
     password = self.get_argument('password', '')
     data = {'status':103}
     sql = "select * from `ofUser` where username=? and password=? "
     res = db.select_one(sql, username, password)   # 查询数据库,看用户名和密码是否正确
     if res is None :              # 未找到,则用户名或密码不对
         pass
     else :                         # 找到,则用户名密码正确;此时可以确保本次登录成功。
         data['status'] = 100
     json_result = json.dumps(data , ensure_ascii=False)     # 把python对象编码成json格式的字符串
     self.write(json_result)
예제 #53
0
 def validate(self):
     rv = Form.validate(self)
     if not rv:
         return False
     user = db.select_one('users',{'name':self.user.data})
     print user
     if user is None:
         self.user.errors.append('Unknown User')
         return False
     if self.password.data != user['password']:
         self.password.errors.append('Invalid Password')
         return False
     self.user = User(user)
     return True
예제 #54
0
def set_task_result(task_id, execution_id, success, task_result=''):
    task = db.select_one('select id, execution_id, status, max_retry, retried from tasks where id=?', task_id)
    if task.execution_id != execution_id:
        raise TaskError('Task execution_id not match.')
    if task.status != _EXECUTING:
        raise TaskError('Task status is not executing')
    kw = dict()
    if success:
        kw['status'] = _DONE
        kw['task_result'] = task_result
    else:
        retried = task.retried + 1
        kw['retried'] = retried
        kw['status'] = _ERROR if task.retried >= task.max_retry else _PENDING
    db.update_kw('tasks', 'id=?', task_id, **kw)
예제 #55
0
파일: center.py 프로젝트: fairy-rui/oj
 def update_contest_ranking(result):
     """
     更新比赛统计数据
     :param result:
     :return:
     """
     rowcount = db.update("show tables like 't_?'", result['contest_id'])
     if rowcount == 0:
         PutTask._create_ranking_table(result)
     count = db.select_int('select count(*) from t_? where username=?', result['contest_id'], result['user_id'])
     if count == 0:
         user = dict(username=result['user_id'])
         db.insert('t_%s' % result['contest_id'], **user)
     p_time = db.select_one('select ?_time from t_? where username=?',
                            result['problem_id'], result['contest_id'], result['user_id'])\
         .get('%s_time' % result['problem_id'])
     if p_time == 0:  # 本题还没有AC
         if result['result'] == configs.result_code.AC:  # 本题初次AC
             with db.connection():
                 submit_time = db.select_one('select submit_time from t_submission where submission_id=?',
                                             result['solution_id']).get('submit_time')   # 提交时间, datetime类型
                 date_time = db.select_one('select contest_date, start_time from t_contest where contest_id=?',
                                           result['contest_id'])
                 c_date = date_time.get('contest_date')  # 比赛开始日期, date类型
                 c_time = date_time.get('start_time')    # 比赛开始时间, timedelta类型
                 # 转换为比赛开始时间, datetime类型
                 contest_time = datetime.strptime(c_date.strftime('%Y-%m-%d %H:%M:%S'), '%Y-%m-%d %H:%M:%S') + c_time
                 ac_time = (submit_time - contest_time).total_seconds()  # 本题初次AC所用时间, 单位为秒, float类型
                 with db.transaction():
                     db.update('update t_? set solved = solved + 1 where username=?',
                               result['contest_id'], result['user_id'])  # AC题数 + 1
                     db.update('update t_? set ?_time=? where username=?',
                               result['contest_id'], result['problem_id'], ac_time, result['user_id'])   # AC题目所用时间
         else:
             db.update('update t_? set ?_wrong = ?_wrong + 1 where username=?',
                       result['contest_id'], result['problem_id'], result['problem_id'], result['user_id'])