Python server added
This commit is contained in:
@@ -0,0 +1,81 @@
|
||||
#!/usr/bin/env python3
|
||||
# -*- coding: utf-8 -*-
|
||||
import pymysql
|
||||
import configparser
|
||||
from threading import RLock as Lock
|
||||
from warnings import filterwarnings
|
||||
|
||||
filterwarnings('ignore', category = pymysql.Warning)
|
||||
class Database:
|
||||
|
||||
buffer = []
|
||||
cout = 0
|
||||
lock = Lock()
|
||||
def __init__(self, DB_USERNAME, DB_PASSWORD, DB_HOST, DB_PORT, DB_DATABASE):
|
||||
"""Init class """
|
||||
self.cnx = pymysql.connect(user=DB_USERNAME, password=DB_PASSWORD, host=DB_HOST, database=DB_DATABASE, port=DB_PORT, charset='utf8')
|
||||
self.cursor = self.cnx.cursor()
|
||||
|
||||
def executeQuery(self, query):
|
||||
try:
|
||||
self.cursor.execute(query)
|
||||
self.cnx.commit()
|
||||
return self.cursor.fetchall()
|
||||
except pymysql.ProgrammingError as e:
|
||||
print(e)
|
||||
print(query)
|
||||
|
||||
@staticmethod
|
||||
def executequerystatic(query):
|
||||
config = configparser.ConfigParser()
|
||||
try:
|
||||
config.read("config.cfg")
|
||||
DB_USERNAME = config.get("Database", "username")
|
||||
DB_PASSWORD = config.get("Database", "password")
|
||||
DB_HOST = config.get("Database", "host")
|
||||
DB_DATABASE = config.get("Database", "database")
|
||||
DB_PORT = config.getint("Database", "port")
|
||||
except Exception as e:
|
||||
print(e)
|
||||
|
||||
cnx = pymysql.connect(user=DB_USERNAME, password=DB_PASSWORD, host=DB_HOST, database=DB_DATABASE, port=DB_PORT)
|
||||
cursor = cnx.cursor()
|
||||
if query != "":
|
||||
cursor.execute(query)
|
||||
cnx.commit()
|
||||
return cursor.fetchall()
|
||||
else:
|
||||
return []
|
||||
|
||||
|
||||
def turnoffautocommit(self):
|
||||
self.cursor.execute("SET autocommit=0;")
|
||||
self.cnx.commit()
|
||||
|
||||
def removeSong(self, path):
|
||||
self.db.executeQuery("DELETE FROM `tracks` WHERE trackUrl = " + path.replace("'", '\\\''))
|
||||
|
||||
def updateInsertSong(self, genre, trackname, artistname, albumname, albumartist, tracknumber, year, duration, path): #notworking
|
||||
self.db.executeQuery("INSERT INTO `tracks` (`genre`, `trackUrl`, `trackName`, `artistName`, `albumName`, `albumArtist`, `trackNumber`, `year`, `duration`) VALUES ('" + genre + b"','" + path.replace("'", '\\\'') + "','" + trackname + "','" + artistname + "','" + albumname + "','" + albumartist + "','" + tracknumber + "','" + year + "','0') " +
|
||||
b" ON DUPLICATE KEY UPDATE `genre`=VALUES(`genre`) , `trackName` = VALUES(`trackName`) , `artistName` = VALUES(`artistName`) ,`albumName` = VALUES(`albumName`) , `albumArtist` = VALUES(`albumArtist`) , `trackNumber` = VALUES(`trackNumber`) , `year` = VALUES(`year`) , `duration` = VALUES(`duration`)")
|
||||
|
||||
def insertMultipleSongs(self, genre, trackname, artistname, albumname, albumartist, tracknumber, year, duration, path):
|
||||
self.buffer.append([genre, trackname, artistname, albumname, albumartist, tracknumber, year, duration, path])
|
||||
# Database.lock.acquire()
|
||||
if len(self.buffer) > 50:
|
||||
self.pushbuffer()
|
||||
# Database.lock.release()
|
||||
|
||||
def pushbuffer(self):
|
||||
query = ('INSERT INTO `tracks` (`genre`, `trackUrl`, `trackName`, `artistName`, `albumName`, `albumArtist`, `trackNumber`, `year`, `duration`) VALUES ')
|
||||
for song in self.buffer:
|
||||
query += "("
|
||||
for field in song:
|
||||
query += "'" + field + "',"
|
||||
query = query[:-1]
|
||||
query += "),"
|
||||
query = query[:-1]
|
||||
query += " ON DUPLICATE KEY UPDATE `genre`=VALUES(`genre`) , `trackName` = VALUES(`trackName`) , `artistName` = VALUES(`artistName`) ,`albumName` = VALUES(`albumName`) , `albumArtist` = VALUES(`albumArtist`) , `trackNumber` = VALUES(`trackNumber`) , `year` = VALUES(`year`) , `duration` = VALUES(`duration`);"
|
||||
self.executeQuery(query)
|
||||
del self.buffer[:]
|
||||
|
||||
Reference in New Issue
Block a user