-
Notifications
You must be signed in to change notification settings - Fork 4
/
DBStuffs.py
120 lines (77 loc) · 3.68 KB
/
DBStuffs.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
import sqlite3
import Log
############################################################################################################################
DBFILENAME = "scraper.db"
############################################################################################################################
# Creates DB is not already there, populates structure if not already there
def DB_CreateDatabase():
conn = sqlite3.connect(DBFILENAME)
cursor = conn.cursor()
sqlfile = open("InitDB.sql", "r")
cursor.executescript(sqlfile.read())
if DB_GetRowCount("Instance") == 0:
DB_Post("INSERT INTO Instance VALUES ('', '', '', '');")
conn.close()
############################################################################################################################
# Generic Execution method for return queries (eg: Select)
def DB_Fetch(SQLCommand):
ResultSet = []
conn = sqlite3.connect(DBFILENAME)
cursor = conn.cursor()
for row in cursor.execute(SQLCommand):
RowRecord = []
for column in row:
RowRecord.append(column)
ResultSet.append(RowRecord)
conn.close()
return ResultSet
############################################################################################################################
# Generic Execution method for return queries (eg: Select)
def DB_FetchSingle(Field, Table):
Result = ""
conn = sqlite3.connect(DBFILENAME)
cursor = conn.cursor()
for row in cursor.execute("SELECT {} FROM {}".format(Field, Table)):
Result = row[0]
conn.close()
return Result
############################################################################################################################
# Generic Execution method for non return queries (eg: Insert, Update, Delete)
def DB_Post(SQLCommand):
conn = sqlite3.connect(DBFILENAME)
conn.execute(SQLCommand)
conn.commit()
conn.close()
############################################################################################################################
# Updates the specified field with specified value if a differrence exists
def DB_UpdateSettings(Field, NewValue):
CurrentValue = DB_FetchSingle(Field, "Instance")
if ((CurrentValue != NewValue) and (NewValue != "")):
DB_Post("UPDATE Instance SET {} = '{}';".format(Field, NewValue))
Log.Information("{} saved to DB".format(Field))
############################################################################################################################
# Returns a count of rows in a specified table
def DB_GetRowCount(Table):
conn = sqlite3.connect(DBFILENAME)
cursor = conn.cursor()
Results = 0
cursor.execute("SELECT Count(*) FROM {}".format(Table))
(Results,)=cursor.fetchone()
conn.close()
return Results
############################################################################################################################
# Returns a list of games in the database
def DB_FetchGameList():
GameList = DB_Fetch("SELECT GameName, Expiry, PageUrl, ImageUrl FROM Games")
return GameList
############################################################################################################################
# Returns a list of games in the database
def DB_GetSilentSend(ChatID):
Result = False
conn = sqlite3.connect(DBFILENAME)
cursor = conn.cursor()
for row in cursor.execute("SELECT SendMuted FROM Telegram WHERE ChatID = {}".format(ChatID)):
Result = row[0]
conn.close()
return Result
############################################################################################################################