Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import sys
- import argparse
- import json
- import datetime
- from pymongo import MongoClient
- import psycopg2
- from cassandra.cluster import Cluster
- import paramiko
- def createParser ():
- parser = argparse.ArgumentParser()
- parser.add_argument ('-database')
- parser.add_argument ('-limit')
- parser.add_argument ('-where', nargs='+')
- parser.add_argument ('-between', nargs='+')
- return parser
- #bs_25001_2015_12 20424-31694, 42400-33281
- class CassandraConnection:
- def __init__(self):
- self.cluster = Cluster(['192.168.9.216'])
- self.session = self.cluster.connect('cdr_sakm')
- def show_time(self, diff, file):
- if int(diff.seconds/60) != 0:
- file.write("%s m %s s %s ms" % (int(diff.seconds/60), int(diff.seconds), int(diff.microseconds/1000)))
- elif(diff.seconds != 0):
- file.write("%s s %s ms" % (int(diff.seconds), int(diff.microseconds/1000)))
- else:
- file.write("%s ms" % (int(diff.microseconds/1000)))
- def select_record(self):
- query = "";
- if namespace.where == None:
- query = "select * from cdr_sakm.bs_25001_2015_12 limit {0}".format(namespace.limit)
- elif namespace.between == None:
- if namespace.where[0] == "Started":
- 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)
- else:
- 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)
- else:
- if namespace.where[0] == "Started":
- 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)
- else:
- 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)
- datetime1 = datetime.datetime.now()
- with open(r'C:\Users\Admin\data\dataFromPython.txt', "w") as file:
- records = self.session.execute(query)
- for record in records:
- file.write(str(record) + "\n")
- diff = datetime.datetime.now()-datetime1
- self.show_time(diff, file)
- class PostgresConnection:
- def __init__(self):
- self.connection = psycopg2.connect("dbname='norsi_postgres' user='postgres' password='11223344' host='192.168.9.216' port='5432'")
- self.connection.autocommit = True
- self.cursor = self.connection.cursor()
- def close_connection(self):
- self.cursor.close()
- self.connection.close()
- def show_time(self, diff, file):
- if int(diff.seconds/60) != 0:
- file.write("%s m %s s %s ms" % (int(diff.seconds/60), int(diff.seconds), int(diff.microseconds/1000)))
- elif(diff.seconds != 0):
- file.write("%s s %s ms" % (int(diff.seconds), int(diff.microseconds/1000)))
- else:
- file.write("%s ms" % (int(diff.microseconds/1000)))
- def select_record(self):
- query = "";
- if namespace.where == None:
- query = "select * from norsi_postgres.norsi_billing.billing limit {0}".format(namespace.limit)
- elif namespace.between == None:
- if namespace.where[0] == "Started":
- 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)
- else:
- query = "select * from norsi_postgres.norsi_billing.billing where {0} = '{1}' limit {2}".format(namespace.where[0], namespace.where[1], namespace.limit)
- else:
- if namespace.where[0] == "Started":
- 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)
- else:
- 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)
- datetime1 = datetime.datetime.now()
- with open(r'C:\Users\Admin\data\dataFromPython.txt', "w") as file:
- self.cursor.execute(query)
- records = self.cursor.fetchall()
- for record in records:
- file.write(str(record) + "\n")
- diff = datetime.datetime.now()-datetime1
- self.show_time(diff, file)
- #09.12.2015 16:33 224 79151989404 CalledNormalized='79149813251'
- class MongoConnection:
- def __init__(self):
- self.client = MongoClient("192.168.9.216", 27020)
- self.db = self.client.norsi_mongo
- self.coll = self.db.billing
- def show_time(self, diff, file):
- if int(diff.seconds/60) != 0:
- file.write("%s m %s s %s ms" % (int(diff.seconds/60), int(diff.seconds), int(diff.microseconds/1000)))
- elif(diff.seconds != 0):
- file.write("%s s %s ms" % (int(diff.seconds), int(diff.microseconds/1000)))
- else:
- file.write("%s ms" % (int(diff.microseconds/1000)))
- def select_record(self):
- if namespace.where == None:
- datetime1 = datetime.datetime.now()
- with open(r'C:\Users\Admin\data\dataFromPython.txt', "w") as file:
- for row in self.db.billing.find().limit(int(namespace.limit)):
- file.write(str(row) + "\n")
- diff = datetime.datetime.now()-datetime1
- self.show_time(diff, file)
- elif namespace.between == None:
- datetime1 = datetime.datetime.now()
- with open(r'C:\Users\Admin\data\dataFromPython.txt', "w") as file:
- for row in self.db.billing.find({"{0}".format(namespace.where[0]):"{0}".format(namespace.where[1])}).limit(int(namespace.limit)):
- file.write(str(row) + "\n")
- diff = datetime.datetime.now()-datetime1
- self.show_time(diff, file)
- else:
- datetime1 = datetime.datetime.now()
- with open(r'C:\Users\Admin\data\dataFromPython.txt', "w") as file:
- 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)):
- file.write(str(row) + "\n")
- diff = datetime.datetime.now()-datetime1
- self.show_time(diff, file)
- class FilesystemConnection:
- def __init__(self):
- self.ssh = paramiko.SSHClient()
- self.ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
- self.ssh.connect('192.168.9.216', username='ban', password='1q2w3e')
- stdin, stdout, stderr = self.ssh.exec_command('cd ..\ncd ..\ncd data/raw/cdr/sakm/25001\nls')
- data = stdout.readlines()
- print(data)
- self.ssh.close()
- if __name__ == '__main__':
- parser = createParser()
- namespace = parser.parse_args(sys.argv[1:])
- print ("Привет, {}!".format (namespace) )
- if namespace.database == "cassandra":
- cassandra_connection = CassandraConnection()
- cassandra_connection.select_record()
- elif namespace.database == "mongo":
- mongo_connection = MongoConnection()
- mongo_connection.select_record()
- elif namespace.database == "postgres":
- postgres_connection = PostgresConnection()
- postgres_connection.select_record()
- elif namespace.database == "filesystem":
- filesystem_connection = FilesystemConnection()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement