Advertisement
Guest User

Untitled

a guest
Jul 30th, 2018
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 8.11 KB | None | 0 0
  1. import sys
  2. import argparse
  3. import json
  4. import datetime
  5. from pymongo import MongoClient
  6. import psycopg2
  7. from cassandra.cluster import Cluster
  8. import paramiko
  9.  
  10.  
  11.  
  12. def createParser ():
  13.     parser = argparse.ArgumentParser()
  14.     parser.add_argument ('-database')
  15.     parser.add_argument ('-limit')
  16.     parser.add_argument ('-where', nargs='+')
  17.     parser.add_argument ('-between', nargs='+')
  18.     return parser
  19.  
  20. #bs_25001_2015_12       20424-31694, 42400-33281      
  21.  
  22. class CassandraConnection:
  23.     def __init__(self):
  24.         self.cluster = Cluster(['192.168.9.216'])
  25.         self.session = self.cluster.connect('cdr_sakm')
  26.  
  27.     def show_time(self, diff, file):
  28.         if int(diff.seconds/60) != 0:
  29.             file.write("%s m %s s %s ms" % (int(diff.seconds/60), int(diff.seconds), int(diff.microseconds/1000)))
  30.         elif(diff.seconds != 0):
  31.             file.write("%s s %s ms" % (int(diff.seconds), int(diff.microseconds/1000)))
  32.         else:
  33.             file.write("%s ms" % (int(diff.microseconds/1000)))
  34.  
  35.     def select_record(self):
  36.         query = "";
  37.         if namespace.where == None:
  38.             query = "select * from cdr_sakm.bs_25001_2015_12 limit {0}".format(namespace.limit)
  39.         elif namespace.between == None:
  40.             if namespace.where[0] == "Started":
  41.                 query = "select * from cdr_sakm.bs_25001_2015_12 where {0} = '{1} {2}' limit {3} ALLOW FILTERING".format(namespace.where[0], namespace.where[1], namespace.where[2],  namespace.limit)
  42.             else:
  43.                 query = "select * from cdr_sakm.bs_25001_2015_12 where {0} = '{1}' limit {2} ALLOW FILTERING".format(namespace.where[0], namespace.where[1], namespace.limit)
  44.         else:
  45.             if namespace.where[0] == "Started":
  46.                 query = "select * from cdr_sakm.bs_25001_2015_12 where {0} > '{1} {2}' and {0} < '{3} {4}' limit {5} ALLOW FILTERING".format(namespace.where[0], namespace.between[0], namespace.between[1], namespace.between[2], namespace.between[3], namespace.limit)
  47.             else:
  48.                 query = "select * from cdr_sakm.bs_25001_2015_12 where {0} in ('{1}', '{2}') limit {3} ALLOW FILTERING".format(namespace.where[0], namespace.between[0], namespace.between[1], namespace.limit)
  49.         datetime1 = datetime.datetime.now()
  50.         with open(r'C:\Users\Admin\data\dataFromPython.txt', "w") as file:
  51.             records = self.session.execute(query)
  52.             for record in records:
  53.                 file.write(str(record) + "\n")
  54.             diff = datetime.datetime.now()-datetime1
  55.             self.show_time(diff, file)
  56.  
  57.  
  58. class PostgresConnection:
  59.     def __init__(self):
  60.         self.connection = psycopg2.connect("dbname='norsi_postgres' user='postgres' password='11223344' host='192.168.9.216' port='5432'")
  61.         self.connection.autocommit = True
  62.         self.cursor = self.connection.cursor()
  63.  
  64.     def close_connection(self):
  65.         self.cursor.close()
  66.         self.connection.close()
  67.  
  68.     def show_time(self, diff, file):
  69.         if int(diff.seconds/60) != 0:
  70.             file.write("%s m %s s %s ms" % (int(diff.seconds/60), int(diff.seconds), int(diff.microseconds/1000)))
  71.         elif(diff.seconds != 0):
  72.             file.write("%s s %s ms" % (int(diff.seconds), int(diff.microseconds/1000)))
  73.         else:
  74.             file.write("%s ms" % (int(diff.microseconds/1000)))
  75.  
  76.     def select_record(self):
  77.         query = "";
  78.         if namespace.where == None:
  79.             query = "select * from norsi_postgres.norsi_billing.billing limit {0}".format(namespace.limit)
  80.         elif namespace.between == None:
  81.             if namespace.where[0] == "Started":
  82.                 query = "select * from norsi_postgres.norsi_billing.billing where {0} = cast('{1}' as timestamp) limit {2}".format(namespace.where[0], namespace.where[1], namespace.limit)
  83.             else:
  84.                 query = "select * from norsi_postgres.norsi_billing.billing where {0} = '{1}' limit {2}".format(namespace.where[0], namespace.where[1], namespace.limit)
  85.         else:
  86.             if namespace.where[0] == "Started":
  87.                 query = "select * from norsi_postgres.norsi_billing.billing where {0} between cast('{1} {2}' AS timestamp) and cast('{3} {4}' AS timestamp) limit {5}".format(namespace.where[0], namespace.between[0], namespace.between[1], namespace.between[2], namespace.between[3], namespace.limit)
  88.             else:
  89.                 query = "select * from norsi_postgres.norsi_billing.billing where {0} between '{1}' and '{2}' limit {3}".format(namespace.where[0], namespace.between[0], namespace.between[1], namespace.limit)
  90.  
  91.         datetime1 = datetime.datetime.now()
  92.         with open(r'C:\Users\Admin\data\dataFromPython.txt', "w") as file:
  93.             self.cursor.execute(query)
  94.             records = self.cursor.fetchall()
  95.             for record in records:
  96.                 file.write(str(record) + "\n")
  97.             diff = datetime.datetime.now()-datetime1
  98.             self.show_time(diff, file)
  99.                
  100.        
  101.  
  102.  
  103.  
  104.    
  105. #09.12.2015 16:33       224 79151989404     CalledNormalized='79149813251'
  106. class MongoConnection:
  107.     def __init__(self):
  108.         self.client = MongoClient("192.168.9.216", 27020)
  109.         self.db = self.client.norsi_mongo
  110.         self.coll = self.db.billing
  111.  
  112.     def show_time(self, diff, file):
  113.         if int(diff.seconds/60) != 0:
  114.             file.write("%s m %s s %s ms" % (int(diff.seconds/60), int(diff.seconds), int(diff.microseconds/1000)))
  115.         elif(diff.seconds != 0):
  116.             file.write("%s s %s ms" % (int(diff.seconds), int(diff.microseconds/1000)))
  117.         else:
  118.             file.write("%s ms" % (int(diff.microseconds/1000)))
  119.  
  120.     def select_record(self):
  121.         if namespace.where == None:
  122.             datetime1 = datetime.datetime.now()
  123.             with open(r'C:\Users\Admin\data\dataFromPython.txt', "w") as file:
  124.                 for row in self.db.billing.find().limit(int(namespace.limit)):
  125.                     file.write(str(row) + "\n")
  126.                 diff = datetime.datetime.now()-datetime1
  127.                 self.show_time(diff, file)
  128.         elif namespace.between == None:            
  129.             datetime1 = datetime.datetime.now()
  130.             with open(r'C:\Users\Admin\data\dataFromPython.txt', "w") as file:
  131.                 for row in self.db.billing.find({"{0}".format(namespace.where[0]):"{0}".format(namespace.where[1])}).limit(int(namespace.limit)):
  132.                     file.write(str(row) + "\n")
  133.                 diff = datetime.datetime.now()-datetime1
  134.                 self.show_time(diff, file)
  135.         else:
  136.             datetime1 = datetime.datetime.now()
  137.             with open(r'C:\Users\Admin\data\dataFromPython.txt', "w") as file:
  138.                 for row in self.db.billing.find({"{0}".format(namespace.where[0]): {'$gte': "{0}".format(namespace.between[0]), '$lt': "{0}".format(namespace.between[1])}}).limit(int(namespace.limit)):
  139.                     file.write(str(row) + "\n")
  140.                 diff = datetime.datetime.now()-datetime1
  141.                 self.show_time(diff, file)
  142.  
  143. class FilesystemConnection:
  144.     def __init__(self):
  145.         self.ssh = paramiko.SSHClient()
  146.         self.ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
  147.         self.ssh.connect('192.168.9.216', username='ban', password='1q2w3e')
  148.         stdin, stdout, stderr = self.ssh.exec_command('cd ..\ncd ..\ncd data/raw/cdr/sakm/25001\nls')
  149.         data = stdout.readlines()
  150.         print(data)
  151.         self.ssh.close()
  152.        
  153.  
  154.  
  155.        
  156.  
  157. if __name__ == '__main__':
  158.  
  159.     parser = createParser()
  160.     namespace = parser.parse_args(sys.argv[1:])
  161.     print ("Привет, {}!".format (namespace) )
  162.  
  163.     if namespace.database == "cassandra":
  164.         cassandra_connection = CassandraConnection()
  165.         cassandra_connection.select_record()
  166.     elif namespace.database == "mongo":
  167.         mongo_connection = MongoConnection()
  168.         mongo_connection.select_record()
  169.     elif namespace.database == "postgres":
  170.         postgres_connection = PostgresConnection()
  171.         postgres_connection.select_record()
  172.     elif namespace.database == "filesystem":
  173.         filesystem_connection = FilesystemConnection()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement