From f4c2fd62f9d8f0bd33f3d5194da511596991c4f8 Mon Sep 17 00:00:00 2001 From: TonyWang Date: Wed, 5 Jul 2017 01:11:17 +0800 Subject: [PATCH 1/2] # catch duplicate entry error and init score with DEFAULT_SCORE # catch duplicate entry error and init score with DEFAULT_SCORE --- db/SqlHelper.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/db/SqlHelper.py b/db/SqlHelper.py index 8df7b1a..a6c4608 100644 --- a/db/SqlHelper.py +++ b/db/SqlHelper.py @@ -1,5 +1,6 @@ # coding:utf-8 import datetime +import sqlalchemy from sqlalchemy import Column, Integer, String, DateTime, Numeric, create_engine, VARCHAR from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm import sessionmaker @@ -54,8 +55,15 @@ def insert(self, value): proxy = Proxy(ip=value['ip'], port=value['port'], types=value['types'], protocol=value['protocol'], country=value['country'], area=value['area'], speed=value['speed']) - self.session.add(proxy) - self.session.commit() + try: + self.session.add(proxy) + self.session.commit() + except sqlalchemy.exc.IntegrityError as e: + # catch duplicate entry error and init score with DEFAULT_SCORE + print(str(e)) + self.session.rollback() + self.update({"ip": value['ip'], "port": value['port']}, {"score" :DEFAULT_SCORE}) + def delete(self, conditions=None): From 233b5b96a5af66f5b6a972958bc131d9ea150ebd Mon Sep 17 00:00:00 2001 From: TonyWang Date: Wed, 5 Jul 2017 09:01:51 -0500 Subject: [PATCH 2/2] fix invalid connection with mysql after long time running fix invalid connection with mysql after long time (8 hours )running. set a expired time to session. --- db/SqlHelper.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/db/SqlHelper.py b/db/SqlHelper.py index a6c4608..a92a9c7 100644 --- a/db/SqlHelper.py +++ b/db/SqlHelper.py @@ -40,7 +40,7 @@ def __init__(self): connect_args = {'check_same_thread': False} self.engine = create_engine(DB_CONFIG['DB_CONNECT_STRING'], echo=False, connect_args=connect_args) else: - self.engine = create_engine(DB_CONFIG['DB_CONNECT_STRING'], echo=False) + self.engine = create_engine(DB_CONFIG['DB_CONNECT_STRING'], echo=False, pool_size=20, pool_recycle=3600) DB_Session = sessionmaker(bind=self.engine) self.session = DB_Session()