Guest User

rets

a guest
Feb 21st, 2019
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.33 KB | None | 0 0
  1. import pickle
  2. import time
  3. from datetime import datetime, timedelta
  4. import ftplib
  5. import MySQLdb
  6. import sys
  7. from sys import argv
  8. import os
  9. import urllib
  10. import subprocess
  11. from ftplib import FTP
  12. from time import sleep
  13. import requests
  14. from rets import Session
  15.  
  16. db2 = MySQLdb.connect(host="127.0.0.1", # your host, usually localhost
  17. charset='utf8',
  18. user="", # your username
  19. passwd="", # your password
  20. db="") # name of the data base
  21.  
  22. cur2 = db2.cursor()
  23.  
  24. cur2.execute('SET NAMES utf8;')
  25. cur2.execute('SET CHARACTER SET utf8;')
  26. cur2.execute('SET character_set_connection=utf8;')
  27.  
  28. cur2.execute("SELECT MAX(modificationtimestamp) FROM apartments")
  29. max_time_string = cur2.fetchone()[0]
  30. max_time_string = str(max_time_string)
  31. max_datetime = datetime.strptime(max_time_string, "%Y-%m-%d %H:%M:%S")
  32. search_datetime = max_datetime - timedelta(minutes=15)
  33. search_time_string = datetime.strftime(search_datetime, "%Y-%m-%dT%H:%M:%S")
  34.  
  35. login_url = ''
  36. username = ''
  37. password = ''
  38. rets_client = Session(login_url, username, password)
  39. rets_client.login()
  40. system_data = rets_client.get_system_metadata()
  41. print system_data
  42. resources = rets_client.get_resource_metadata(resource='Agent')
  43. resources
  44. print "Getting records since", max_time_string
  45. search_results = rets_client.search(resource='Property', resource_class='MUL', dmql_query='(ModificationTimestamp='+search_time_string+'+)') #change search query here
  46. print "Inserting", len(search_results), "records now"
  47. chunk_size = 40000
  48. chunks = []
  49. chunk_size = max(1, chunk_size)
  50. for i in range(0, len(search_results), chunk_size):
  51. chunk = search_results[i:i+chunk_size]
  52. chunks.append(chunk)
  53.  
  54. for chunk in chunks:
  55.  
  56. placeholders = ', '.join(['%s'] * len(chunk[0]))
  57. columns = "`%s`" % '`,`'.join(chunk[0].keys())
  58. update_string = ""
  59. for key in chunk[0]:
  60. update_string = update_string + "`" + key + "`=VALUES(`" + key + "`),"
  61. update_string = update_string[:-1]
  62.  
  63. sql = "INSERT IGNORE INTO apartments ( %s ) VALUES ( %s ) ON DUPLICATE KEY UPDATE %s" % (columns, placeholders, update_string) #change table here
  64.  
  65. chunk_values = []
  66. for result in chunk:
  67. chunk_values.append(tuple(result.values()))
  68.  
  69. success = False
  70.  
  71. try:
  72. cur2.executemany(sql, chunk_values)
  73. db2.commit()
  74. print ("Records inserted")
  75. success = True
  76. except:
  77. db2.rollback()
  78.  
  79. if not success:
  80.  
  81. for result in chunk:
  82.  
  83. placeholders = ', '.join(['%s'] * len(result))
  84. columns = "`%s`" % '`,`'.join(result.keys())
  85. update_string = ""
  86. for key in result:
  87. update_string = update_string + "`" + key + "`=VALUES(`" + key + "`),"
  88. update_string = update_string[:-1]
  89.  
  90. sql = "INSERT INTO apartments ( %s ) VALUES ( %s ) ON DUPLICATE KEY UPDATE %s" % (columns, placeholders, update_string) #change table here
  91.  
  92. print (sql)
  93. cur2.execute(sql, result.values())
  94. print len(search_results), "records inserted!"
  95. db2.commit()
  96. print "Processed", len(search_results), "results, quitting."
  97. exit()
Add Comment
Please, Sign In to add comment