· 8 years ago · Dec 04, 2017, 09:44 AM
1##############################
2#########CONFIG START#########
3##############################
4
5mysqlHost = 'localhost'
6mysqlUser = 'root'
7mysqlPasswd = ''
8mysqlDB = 'wcs_database'
9mysqlSocket = '' # Leave mysqlSocket blank unless you know what your doing.
10
11##############################
12##########CONFIG END##########
13##############################
14
15##############################
16##########DO NOT EDIT#########
17########BELOW THIS LINE#######
18#########OR BAD THINGS########
19#########WILL HAPPEN!#########
20##############################
21
22
23import es
24
25from wcs import wcs
26
27import pymysql
28from pymysql.exceptions import MySQLError
29
30
31
32class MySQLManager(wcs.SQLiteManager):
33 def __init__(self):
34 pass
35
36 def execute(self, statement, args=None):
37 while isinstance(args, (list, tuple)) and len(args) == 1:
38 args = args[0]
39
40 try:
41 self.cursor.execute(statement.replace('?','%s'), args)
42 except:
43 self.cursor.execute(statement.replace('?',"'%s'"), args)
44
45 def connect(self):
46 if mysqlSocket:
47 self.connection = pymysql.connect(host=str(mysqlHost), user=str(mysqlUser), passwd=str(mysqlPasswd), unix_socket=str(mysqlSocket))
48 else:
49 self.connection = pymysql.connect(host=str(mysqlHost), user=str(mysqlUser), passwd=str(mysqlPasswd))
50
51 self.cursor = self.connection.cursor()
52
53 self.execute("CREATE DATABASE IF NOT EXISTS ?", str('mysqlUser'))
54
55 self.execute("USE ?", str('mysqlUser'))
56
57 self.execute("""\
58 CREATE TABLE IF NOT EXISTS Players (
59 UserID INTEGER PRIMARY KEY AUTO_INCREMENT NOT NULL,
60 steamid VARCHAR(30) NOT NULL,
61 currace VARCHAR(30) NOT NULL,
62 name VARCHAR(30) NOT NULL,
63 totallevel INTEGER DEFAULT 0,
64 lastconnect INTEGER
65 )""")
66
67 self.execute("""\
68 CREATE TABLE IF NOT EXISTS Races (
69 RaceID INTEGER PRIMARY KEY AUTO_INCREMENT NOT NULL,
70 UserID INTEGER NOT NULL,
71 name VARCHAR(50) NOT NULL,
72 skills VARCHAR(50) NOT NULL,
73 level INTEGER DEFAULT 0,
74 xp INTEGER DEFAULT 0,
75 unused INTEGER DEFAULT 0
76 )""")
77
78 def save(self):
79 self.connection.commit()
80
81 def close(self):
82 self.cursor.close()
83 self.connection.close()
84newDatabase = MySQLManager()
85
86def player_disconnect(ev):
87 newDatabase.save()
88
89def load():
90 for x in wcs.tmp:
91 wcs.tmp[x].save()
92
93 wcs.tmp.clear()
94
95 wcs.database.save()
96 wcs.database.close()
97
98 try:
99 newDatabase.connect()
100 except MySQLError, e:
101 wcs.logging.log('mysql_connection: Could not connect to database. Error: '+str(e))
102 raise MySQLError, e
103
104 wcs.database = newDatabase
105
106def unload():
107 for x in wcs.tmp:
108 wcs.tmp[x].save()
109
110 wcs.tmp.clear()
111
112 newDatabase.save()
113 newDatabase.close()
114
115 oldDatabase = wcs.SQLiteManager(wcs.Path(wcs.ini.path).joinpath('data'))
116
117 wcs.database = oldDatabase