mirror of
https://github.com/SickGear/SickGear.git
synced 2024-12-11 21:53:37 +00:00
Fix for coming soon episodes page.
Reverted sql -> sqlachemy changes, to soon and will be done in seperate branch.
This commit is contained in:
parent
9e4ec2cfb8
commit
7e5cc8c673
2 changed files with 25 additions and 18 deletions
|
@ -20,18 +20,15 @@ from __future__ import with_statement
|
||||||
|
|
||||||
import os.path
|
import os.path
|
||||||
import re
|
import re
|
||||||
import time
|
|
||||||
import threading
|
import threading
|
||||||
|
import sqlite3
|
||||||
import sickbeard
|
import sickbeard
|
||||||
|
|
||||||
from sqlalchemy import create_engine, exc
|
from sqlalchemy import create_engine, exc
|
||||||
from sqlalchemy.orm import sessionmaker
|
|
||||||
|
|
||||||
from sickbeard import encodingKludge as ek
|
from sickbeard import encodingKludge as ek
|
||||||
from sickbeard import logger
|
from sickbeard import logger
|
||||||
from sickbeard.exceptions import ex
|
from sickbeard.exceptions import ex
|
||||||
from sickbeard.common import cpu_presets
|
|
||||||
|
|
||||||
db_lock = threading.Lock()
|
db_lock = threading.Lock()
|
||||||
|
|
||||||
|
@ -54,8 +51,13 @@ class DBConnection:
|
||||||
|
|
||||||
self.filename = filename
|
self.filename = filename
|
||||||
|
|
||||||
engine = create_engine('sqlite:///' + dbFilename(filename))
|
#engine = create_engine('sqlite:///' + dbFilename(filename))
|
||||||
self.connection = engine.connect()
|
#self.connection = engine.connect()
|
||||||
|
self.connection = sqlite3.connect(dbFilename(filename), 20)
|
||||||
|
if row_type == "dict":
|
||||||
|
self.connection.row_factory = self._dict_factory
|
||||||
|
else:
|
||||||
|
self.connection.row_factory = sqlite3.Row
|
||||||
|
|
||||||
def checkDBVersion(self):
|
def checkDBVersion(self):
|
||||||
result = None
|
result = None
|
||||||
|
@ -96,7 +98,7 @@ class DBConnection:
|
||||||
|
|
||||||
# get out of the connection attempt loop since we were successful
|
# get out of the connection attempt loop since we were successful
|
||||||
break
|
break
|
||||||
except exc.OperationalError, e:
|
except sqlite3.OperationalError, e:
|
||||||
if "unable to open database file" in e.args[0] or "database is locked" in e.args[0]:
|
if "unable to open database file" in e.args[0] or "database is locked" in e.args[0]:
|
||||||
logger.log(u"DB error: " + ex(e), logger.WARNING)
|
logger.log(u"DB error: " + ex(e), logger.WARNING)
|
||||||
attempt += 1
|
attempt += 1
|
||||||
|
@ -104,7 +106,7 @@ class DBConnection:
|
||||||
else:
|
else:
|
||||||
logger.log(u"DB error: " + ex(e), logger.ERROR)
|
logger.log(u"DB error: " + ex(e), logger.ERROR)
|
||||||
raise
|
raise
|
||||||
except exc.DatabaseError, e:
|
except sqlite3.DatabaseError, e:
|
||||||
logger.log(u"Fatal error executing query: " + ex(e), logger.ERROR)
|
logger.log(u"Fatal error executing query: " + ex(e), logger.ERROR)
|
||||||
raise
|
raise
|
||||||
|
|
||||||
|
@ -125,31 +127,30 @@ class DBConnection:
|
||||||
while attempt < 5:
|
while attempt < 5:
|
||||||
try:
|
try:
|
||||||
|
|
||||||
with self.connection.begin() as trans:
|
with self.connection as trans:
|
||||||
for qu in querylist:
|
for qu in querylist:
|
||||||
if len(qu) == 1:
|
if len(qu) == 1:
|
||||||
if logTransaction:
|
if logTransaction:
|
||||||
logger.log(qu[0], logger.DEBUG)
|
logger.log(qu[0], logger.DEBUG)
|
||||||
sqlResult.append(self.connection.execute(qu[0]))
|
sqlResult.append(trans.execute(qu[0]))
|
||||||
elif len(qu) > 1:
|
elif len(qu) > 1:
|
||||||
if logTransaction:
|
if logTransaction:
|
||||||
logger.log(qu[0] + " with args " + str(qu[1]), logger.DEBUG)
|
logger.log(qu[0] + " with args " + str(qu[1]), logger.DEBUG)
|
||||||
sqlResult.append(self.connection.execute(qu[0], qu[1]))
|
sqlResult.append(trans.execute(qu[0], qu[1]))
|
||||||
|
|
||||||
logger.log(u"Transaction with " + str(len(querylist)) + u" queries executed", logger.DEBUG)
|
logger.log(u"Transaction with " + str(len(querylist)) + u" queries executed", logger.DEBUG)
|
||||||
return sqlResult
|
return sqlResult
|
||||||
except exc.OperationalError, e:
|
except sqlite3.OperationalError, e:
|
||||||
sqlResult = []
|
sqlResult = []
|
||||||
if trans.connection:
|
if trans.connection:
|
||||||
trans.rollback()
|
trans.rollback()
|
||||||
if "unable to open database file" in e.args[0] or "database is locked" in e.args[0]:
|
if "unable to open database file" in e.args[0] or "database is locked" in e.args[0]:
|
||||||
logger.log(u"DB error: " + ex(e), logger.WARNING)
|
logger.log(u"DB error: " + ex(e), logger.WARNING)
|
||||||
attempt += 1
|
attempt += 1
|
||||||
#time.sleep(cpu_presets[sickbeard.CPU_PRESET])
|
|
||||||
else:
|
else:
|
||||||
logger.log(u"DB error: " + ex(e), logger.ERROR)
|
logger.log(u"DB error: " + ex(e), logger.ERROR)
|
||||||
raise
|
raise
|
||||||
except exc.DatabaseError, e:
|
except sqlite3.DatabaseError, e:
|
||||||
sqlResult = []
|
sqlResult = []
|
||||||
if trans.connection:
|
if trans.connection:
|
||||||
trans.rollback()
|
trans.rollback()
|
||||||
|
@ -178,7 +179,7 @@ class DBConnection:
|
||||||
sqlResult = self.connection.execute(query, args)
|
sqlResult = self.connection.execute(query, args)
|
||||||
# get out of the connection attempt loop since we were successful
|
# get out of the connection attempt loop since we were successful
|
||||||
break
|
break
|
||||||
except exc.OperationalError, e:
|
except sqlite3.OperationalError, e:
|
||||||
if "unable to open database file" in e.args[0] or "database is locked" in e.args[0]:
|
if "unable to open database file" in e.args[0] or "database is locked" in e.args[0]:
|
||||||
logger.log(u"DB error: " + ex(e), logger.WARNING)
|
logger.log(u"DB error: " + ex(e), logger.WARNING)
|
||||||
attempt += 1
|
attempt += 1
|
||||||
|
@ -186,7 +187,7 @@ class DBConnection:
|
||||||
else:
|
else:
|
||||||
logger.log(u"DB error: " + ex(e), logger.ERROR)
|
logger.log(u"DB error: " + ex(e), logger.ERROR)
|
||||||
raise
|
raise
|
||||||
except exc.DatabaseError, e:
|
except sqlite3.DatabaseError, e:
|
||||||
logger.log(u"Fatal error executing query: " + ex(e), logger.ERROR)
|
logger.log(u"Fatal error executing query: " + ex(e), logger.ERROR)
|
||||||
raise
|
raise
|
||||||
|
|
||||||
|
@ -211,7 +212,7 @@ class DBConnection:
|
||||||
|
|
||||||
result = self.action(query, valueDict.values() + keyDict.values())
|
result = self.action(query, valueDict.values() + keyDict.values())
|
||||||
|
|
||||||
if not result.rowcount > 0:
|
if result.rowcount > 0:
|
||||||
query = "INSERT INTO " + tableName + " (" + ", ".join(valueDict.keys() + keyDict.keys()) + ")" + \
|
query = "INSERT INTO " + tableName + " (" + ", ".join(valueDict.keys() + keyDict.keys()) + ")" + \
|
||||||
" VALUES (" + ", ".join(["?"] * len(valueDict.keys() + keyDict.keys())) + ")"
|
" VALUES (" + ", ".join(["?"] * len(valueDict.keys() + keyDict.keys())) + ")"
|
||||||
self.action(query, valueDict.values() + keyDict.values())
|
self.action(query, valueDict.values() + keyDict.values())
|
||||||
|
@ -224,6 +225,13 @@ class DBConnection:
|
||||||
columns[column['name']] = {'type': column['type']}
|
columns[column['name']] = {'type': column['type']}
|
||||||
return columns
|
return columns
|
||||||
|
|
||||||
|
# http://stackoverflow.com/questions/3300464/how-can-i-get-dict-from-sqlite-query
|
||||||
|
def _dict_factory(self, cursor, row):
|
||||||
|
d = {}
|
||||||
|
for idx, col in enumerate(cursor.description):
|
||||||
|
d[col[0]] = row[idx]
|
||||||
|
return d
|
||||||
|
|
||||||
def hasTable(self, tableName):
|
def hasTable(self, tableName):
|
||||||
return len(self.action("SELECT 1 FROM sqlite_master WHERE name = ?;", (tableName, )).fetchall()) > 0
|
return len(self.action("SELECT 1 FROM sqlite_master WHERE name = ?;", (tableName, )).fetchall()) > 0
|
||||||
|
|
||||||
|
|
|
@ -113,7 +113,6 @@ def initWebServer(options={}):
|
||||||
'tools.gzip.mime_types': mime_gzip,
|
'tools.gzip.mime_types': mime_gzip,
|
||||||
'error_page.401': http_error_401_hander,
|
'error_page.401': http_error_401_hander,
|
||||||
'error_page.404': http_error_404_hander,
|
'error_page.404': http_error_404_hander,
|
||||||
'server.thread_pool': 10,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if enable_https:
|
if enable_https:
|
||||||
|
|
Loading…
Reference in a new issue