import-mbartists.py 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. #!/usr/bin/env python
  2. import sys, gzip, time
  3. import MySQLdb as ordbms
  4. import csv
  5. class MBArtistIdImport:
  6. def __init__(self, hostname, username, password, database):
  7. self.conn = ordbms.connect (host = hostname,
  8. user = username,
  9. passwd = password,
  10. db = database)
  11. self.cursor = self.conn.cursor ()
  12. def parse(self, dump):
  13. for row in csv.reader(dump, dialect='excel-tab'):
  14. if self.artist_exists(row[1]):
  15. try:
  16. self.cursor.execute("UPDATE Artist SET imbid = %s, mbid = %s WHERE name = %s", (row[0], row[2], row[1]));
  17. except Exception, e:
  18. print e
  19. else:
  20. try:
  21. self.cursor.execute("INSERT INTO Artist (imbid, name, mbid) VALUES (%s, %s, %s)", (row[0], row[1], row[2]));
  22. except Exception, e:
  23. print e
  24. def close(self):
  25. self.cursor.close()
  26. self.conn.commit()
  27. self.conn.close()
  28. def artist_exists(self, artist):
  29. try:
  30. self.cursor.execute("SELECT name FROM Artist WHERE name = %s ", (artist,))
  31. return self.cursor.rowcount != 0
  32. except:
  33. return False
  34. if __name__ == "__main__":
  35. if len(sys.argv) != 6:
  36. print "Usage: import-mbartists.py <database dump> <mysql hostname> <mysql username> <mysql password> <mysql database>"
  37. sys.exit(1)
  38. if sys.argv[1][-2:] == "gz":
  39. dump = gzip.open(sys.argv[1], "r")
  40. else:
  41. dump = open(sys.argv[1], "r")
  42. importer = MBArtistIdImport(sys.argv[2], sys.argv[3], sys.argv[4], sys.argv[5])
  43. importer.parse(dump)
  44. importer.close()