From 9a3ab8728bbdcda3ed711e0fdf7f10ace88f0716 Mon Sep 17 00:00:00 2001 From: Andreas Zweili Date: Sun, 2 Sep 2018 22:40:32 +0200 Subject: [PATCH] WIP with Flask --- Vagrantfile | 4 +- cassandra_create_data.py | 62 +++++++++++++++ cassandra-test.py => cassandra_read_data.py | 0 cassandra_setup.py | 79 +++++++++++++++++++ mariadb-test.py | 10 --- mariadb_create_data.py | 42 ++++++++++ ...iadb_database.sql => mariadb_create_db.sql | 0 mariadb_db.py | 50 ++++++++++++ mariadb_read_data.py | 19 +++++ mariadb_setup.py | 4 + requirements.txt | 3 + 11 files changed, 261 insertions(+), 12 deletions(-) create mode 100644 cassandra_create_data.py rename cassandra-test.py => cassandra_read_data.py (100%) create mode 100644 cassandra_setup.py delete mode 100644 mariadb-test.py create mode 100644 mariadb_create_data.py rename create_mariadb_database.sql => mariadb_create_db.sql (100%) create mode 100644 mariadb_db.py create mode 100644 mariadb_read_data.py create mode 100644 mariadb_setup.py diff --git a/Vagrantfile b/Vagrantfile index 0f8ddcf..4bf9d8f 100644 --- a/Vagrantfile +++ b/Vagrantfile @@ -11,8 +11,6 @@ Vagrant.configure("2") do |config| v.cpus = 2 end - config.vm.network "forwarded_port", guest: 3306, host: 3306 - config.vm.synced_folder ".", "/vagrant", type: "virtualbox" #Begin des Installationsscripts @@ -43,6 +41,8 @@ Vagrant.configure("2") do |config| source /home/vagrant/venv/bin/activate pip3 install wheel pip3 install -r /vagrant/requirements.txt + python3 mariadb_setup.py + python3 cassandra_setup.py deactivate SHELL diff --git a/cassandra_create_data.py b/cassandra_create_data.py new file mode 100644 index 0000000..98ea5f0 --- /dev/null +++ b/cassandra_create_data.py @@ -0,0 +1,62 @@ +""" +Python by Techfossguru +Copyright (C) 2017 Satish Prasad + +""" +import logging +from cassandra.cluster import Cluster, BatchStatement +from cassandra import ConsistencyLevel +from cassandra.query import SimpleStatement + + +class PythonCassandraExample: + + def __init__(self): + self.cluster = None + self.session = None + self.keyspace = None + self.log = None + + def __del__(self): + self.cluster.shutdown() + + def createsession(self): + self.cluster = Cluster(['localhost']) + self.session = self.cluster.connect(self.keyspace) + + def getsession(self): + return self.session + + # How about Adding some log info to see what went wrong + def setlogger(self): + log = logging.getLogger() + log.setLevel('INFO') + handler = logging.StreamHandler() + handler.setFormatter(logging.Formatter( + "%(asctime)s [%(levelname)s] %(name)s: %(message)s")) + log.addHandler(handler) + self.log = log + + def insert_data(self): + insert_sql = self.session.prepare( + "INSERT INTO employee (emp_id, ename , sal,city) VALUES (?,?,?,?)") + batch = BatchStatement() + batch.add(insert_sql, (1, 'LyubovK', 2555, 'Dubai')) + batch.add(insert_sql, (2, 'JiriK', 5660, 'Toronto')) + batch.add(insert_sql, (3, 'IvanH', 2547, 'Mumbai')) + batch.add(insert_sql, (4, 'YuliaT', 2547, 'Seattle')) + self.session.execute(batch) + self.log.info('Batch Insert Completed') + + def select_data(self): + rows = self.session.execute('select * from employee limit 5;') + for row in rows: + print(row.ename, row.sal) + + def update_data(self): + pass + + def delete_data(self): + pass + + diff --git a/cassandra-test.py b/cassandra_read_data.py similarity index 100% rename from cassandra-test.py rename to cassandra_read_data.py diff --git a/cassandra_setup.py b/cassandra_setup.py new file mode 100644 index 0000000..392d9c1 --- /dev/null +++ b/cassandra_setup.py @@ -0,0 +1,79 @@ +""" +Python by Techfossguru +Copyright (C) 2017 Satish Prasad + +""" +import logging +from cassandra.cluster import Cluster, BatchStatement + + +class PythonCassandraExample: + + def __init__(self): + self.cluster = None + self.session = None + self.keyspace = None + self.log = None + + def __del__(self): + self.cluster.shutdown() + + def createsession(self): + self.cluster = Cluster(['localhost']) + self.session = self.cluster.connect(self.keyspace) + + def getsession(self): + return self.session + + # How about Adding some log info to see what went wrong + def setlogger(self): + log = logging.getLogger() + log.setLevel('INFO') + handler = logging.StreamHandler() + handler.setFormatter(logging.Formatter( + "%(asctime)s [%(levelname)s] %(name)s: %(message)s")) + log.addHandler(handler) + self.log = log + + # Create Keyspace based on Given Name + def createkeyspace(self, keyspace): + """ + :param keyspace: The Name of Keyspace to be created + :return: + """ + # Before we create new lets check if exiting keyspace; we will drop + # that and create new + rows = self.session.execute( + "SELECT keyspace_name FROM system_schema.keyspaces") + if keyspace in [row[0] for row in rows]: + self.log.info("dropping existing keyspace...") + self.session.execute("DROP KEYSPACE " + keyspace) + + self.log.info("creating keyspace...") + self.session.execute(""" + CREATE KEYSPACE %s + WITH replication = { 'class': 'SimpleStrategy', 'replication_factor': '2' } + """ % keyspace) + + self.log.info("setting keyspace...") + self.session.set_keyspace(keyspace) + + def create_table(self): + c_sql = """ + CREATE TABLE IF NOT EXISTS employee (emp_id int PRIMARY KEY, + ename varchar, + sal double, + city varchar); + """ + self.session.execute(c_sql) + self.log.info("Employee Table Created !!!") + + # lets do some batch insert +if __name__ == '__main__': + example1 = PythonCassandraExample() + example1.createsession() + example1.setlogger() + example1.createkeyspace('techfossguru') + example1.create_table() + example1.insert_data() + example1.select_data() diff --git a/mariadb-test.py b/mariadb-test.py deleted file mode 100644 index 61b48cc..0000000 --- a/mariadb-test.py +++ /dev/null @@ -1,10 +0,0 @@ -#!/usr/bin/python -import mysql.connector as mariadb - -mariadb_connection = mariadb.connect(user='vagrant', - database='testdb') -cursor = mariadb_connection.cursor() -cursor.execute("create table if not exists test (a bigint auto_increment primary key, first_name varchar(128), last_name varchar(128))") -cursor.execute("INSERT INTO test (first_name,last_name) VALUES (%s,%s)", ("first_name", "last_name")) - -mariadb_connection.commit() diff --git a/mariadb_create_data.py b/mariadb_create_data.py new file mode 100644 index 0000000..e7fa325 --- /dev/null +++ b/mariadb_create_data.py @@ -0,0 +1,42 @@ +#!/usr/bin/python +import mysql.connector as mariadb + +mariadb_connection = mariadb.connect(user='vagrant', + database='testdb') +cursor = mariadb_connection.cursor() +cursor.execute("""create table if not exists test ( + id bigint auto_increment primary key, + first_name varchar(128), + middle_name varchar(128)), + last_name varchar(128)), + street_name varchar(128)), + city_name varchar(128)), + state_name varchar(128)), + country_name varchar(128)), + telephonenumber varchar(128)), + mobile_number varchar(128)), + email varchar(128)), + hobby varchar(128)), + gender varchar(128)), + salutation varchar(128)), + last_name varchar(128)), + last_name varchar(128)), + last_name varchar(128)), + last_name varchar(128)), + last_name varchar(128)), + last_name varchar(128)), + last_name varchar(128)), + last_name varchar(128)), + last_name varchar(128)), + last_name varchar(128)), +""") + +cursor.execute("""INSERT INTO test (first_name,last_name) VALUES (%s,%s)""", + ("first_name", "last_name")) + +mariadb_connection.commit() + +cursor.execute("select * from test") +data = cursor.fetchall() +for row in data: + print(row) diff --git a/create_mariadb_database.sql b/mariadb_create_db.sql similarity index 100% rename from create_mariadb_database.sql rename to mariadb_create_db.sql diff --git a/mariadb_db.py b/mariadb_db.py new file mode 100644 index 0000000..5159466 --- /dev/null +++ b/mariadb_db.py @@ -0,0 +1,50 @@ +from flask import Flask +from flask_sqlalchemy import SQLAlchemy + +app = Flask(__name__) +app.config['SQLALCHEMY_DATABASE_URI'] = ( + 'mysql+mysqlconnector://vagrant@localhost/testdb') +app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False +db = SQLAlchemy(app) + + +class Country(db.Model): + id = db.Column(db.Integer, primary_key=True) + name = db.Column(db.String(80), unique=True, nullable=False) + + def __repr__(self): + return '' % self.name + + +class City(db.Model): + id = db.Column(db.Integer, primary_key=True) + zip_code = db.Column(db.Integer, unique=True, nullable=False) + name = db.Column(db.String(80), unique=True, nullable=False) + country_id = db.Column(db.Integer, db.ForeignKey('country.id'), + nullable=False) + country = db.relationship('City', backref=db.backref('countrys', + lazy=True)) + + def __repr__(self): + return '' % self.name + + +class User(db.Model): + id = db.Column(db.Integer, primary_key=True) + username = db.Column(db.String(80), unique=True, nullable=False) + email = db.Column(db.String(120), unique=True, nullable=False) + first_name = db.Column(db.String(120), nullable=False) + last_name = db.Column(db.String(120), nullable=False) + middle_name = db.Column(db.String(120), nullable=False) + street_name = db.Column(db.String(120), nullable=False) + telephonenumber = db.Column(db.String(120), nullable=False) + mobile_number = db.Column(db.String(120), nullable=False) + hobby = db.Column(db.String(120), nullable=False) + salutation = db.Column(db.String(120), nullable=False) + gender = db.Column(db.String(120), nullable=False) + city_id = db.Column(db.Integer, db.ForeignKey('city.id'), nullable=False) + city = db.relationship('City', backref=db.backref('users', lazy=True)) + + def __repr__(self): + return '' % self.username + diff --git a/mariadb_read_data.py b/mariadb_read_data.py new file mode 100644 index 0000000..478a5ac --- /dev/null +++ b/mariadb_read_data.py @@ -0,0 +1,19 @@ +#!/usr/bin/python +import mysql.connector as mariadb + +mariadb_connection = mariadb.connect(user='vagrant', + database='testdb') +cursor = mariadb_connection.cursor() +cursor.execute("""create table if not exists test ( + a bigint auto_increment primary key, + first_name varchar(128), + last_name varchar(128))""") +cursor.execute("""INSERT INTO test (first_name,last_name) VALUES (%s,%s)""", + ("first_name", "last_name")) + +mariadb_connection.commit() + +cursor.execute("select * from test") +data = cursor.fetchall() +for row in data: + print(row) diff --git a/mariadb_setup.py b/mariadb_setup.py new file mode 100644 index 0000000..0c74e0c --- /dev/null +++ b/mariadb_setup.py @@ -0,0 +1,4 @@ +from mariadb_db import db + + +db.create_all() diff --git a/requirements.txt b/requirements.txt index c2b1cca..4cffb1b 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,3 +1,6 @@ wheel cassandra-driver +flask +flask-sqlalchemy +flask-cqlalchemy mysql-connector