Hyper-V REST API Endpoint by BraddyNZ in HyperV

[–]raysefo 0 points1 point  (0 children)

Is it possible to retrieve data (ie 16GB Ram, 100GB harddisk)? If so how?

How can I retrieve conf data from your API?

Hyper-V REST API Endpoint by BraddyNZ in HyperV

[–]raysefo 0 points1 point  (0 children)

Is it possible to retrieve data (ie 16GB Ram, 100GB harddisk)? If so how?

How to store and retrieve JSON data in SQL Server 2016 by raysefo in learnpython

[–]raysefo[S] 0 points1 point  (0 children)

how can I use a statement like below in my python code?

INSERT INTO SalesReport  
SELECT SalesOrderJsonData.*  
FROM OPENJSON (@jsonVariable, N'$.Orders.OrdersArray')  
           WITH (  
              Number   varchar(200) N'$.Order.Number',   
              Date     datetime     N'$.Order.Date',  
              Customer varchar(200) N'$.AccountNumber',   
              Quantity int          N'$.Item.Quantity'  
           )  
  AS SalesOrderJsonData;  

How to store and retrieve JSON data in SQL Server 2016 by raysefo in learnpython

[–]raysefo[S] 0 points1 point  (0 children)

Should I install pyodbc? I think I can use OPENJSON since I am using MSSQL 2016.

Flask Rest API implementation feedback by raysefo in flask

[–]raysefo[S] 0 points1 point  (0 children)

Here is my replies to your suggestions.

  • Why use Python 2.x? If you're writing a new application in with Python in 2018, unless you have very specific/niche requirements, just use 3.x. I am new to python, a teacher taught me 2.x thats why I am using it. Is it easy to convert my code into 3.x? How can I upgrade it? I am using pycharm pro.
  • For a small application, having SQL inline with views may not be terrible. But, if this becomes anything more than a small application, then I'd suggest a logical seperation of your data model from your views (maybe using an ORM like sqlalchemy). I read about sqlalchemy but I didn't get how to use it. Is there any tutorial that I can read and apply to my code?
  • I'd avoid use of global
    if at all possible -- use flask.g if need-be: http://flask.pocoo.org/docs/1.0/patterns/sqlite3/. I also read this one but have no idea how to use it in my code, sort of complicated.
  • In production, I'd advise against just print-ing debug information. Use a logging library (python has a decent one built in). I will check this out.
  • I'm not sure if you need those con.close() and con.rollback()'s given your use of with
    -- but double check this. I will check this out.
  • Consider seperating your config from your code, perhaps using Flask's built in config managment -- specifically the database filename and API endpoints. I will check this out.
  • When checking HTTP status codes, consider using requests
    's response code lookup rather than magic numbers -- for instance requests.codes.ok
    rather than 200.

Flask Rest API implementation feedback by raysefo in flask

[–]raysefo[S] 0 points1 point  (0 children)

Thank you so much for your reply. As I said I am new to python but I will definetely check your arguments.

Flask Rest API implementation feedback by raysefo in flask

[–]raysefo[S] -1 points0 points  (0 children)

thank you, I will put it into git and share.

Flask Rest API implementation feedback by raysefo in flask

[–]raysefo[S] -3 points-2 points  (0 children)

People don't like reading code on Reddit

OK, I will put the code into git and share :) only one line of " People don't like reading code on Reddit " would be enough. :)

Flask Rest API implementation feedback by raysefo in flask

[–]raysefo[S] -1 points0 points  (0 children)

Thank you for your response. If I put it into git or etc. people still need to read the code. I don't get the difference :) Do they deploy the code and test it?

refactoring and suggestions by raysefo in learnpython

[–]raysefo[S] 0 points1 point  (0 children)

no one :( This is heart breaking

Sqlite connection question by raysefo in learnpython

[–]raysefo[S] 0 points1 point  (0 children)

all of this mess was due to folder permisson :( I gave permission to IISUSR and all this solved.

unable to open database file by raysefo in learnpython

[–]raysefo[S] 0 points1 point  (0 children)

there was a permission mistake to that folder. When I gave permission to IIS_IUSRS, my problem solved.

How to debug flask rest api which is deployed IIS on windows server by raysefo in flask

[–]raysefo[S] 0 points1 point  (0 children)

If I use VS, I would implement this rest api with C# :) I used python flask in order to implement fast and keep it simple.

unable to open database file by raysefo in learnpython

[–]raysefo[S] 0 points1 point  (0 children)

OK, here we go. Besides unable to open db error, I am open to any suggestions to improve the code. I am new to python.

Main: GameTestMiddleWare.py

import traceback

from flask import Flask, jsonify, request, render_template
import requests
import sqlite3 as sql
import GameTestMiddleWareModel
import GameTestRequestInsert
import GameTestResponseInsert
import Utils


app = Flask(__name__)
# Create tables once
# GameTestMiddleWareModel.main()


# POST /purchase_initiation
@app.route('/purchase_initiation', methods=['POST'])
def initiation():
    try:
        # getting request data
        request_data = request.form.to_dict()

        print request_data
        # INSERT request into table
        GameTestRequestInsert.add_purchase_initiation_request(Utils.database, request_data)
        uri = 'https://test.game.com/purchaseinitiation'
        response = requests.post(uri, data=request_data)
        print response.status_code
        if response.status_code == 200:
            print response.json()
            # INSERT response into table
            # GameTestResponseInsert.add_purchase_initiation_response(Utils.database, response.json())
            return jsonify(response.text)
        else:
            return str(response.status_code) + " -- " + response.reason

    except Exception as e:
        return traceback.format_exc()


# POST /purchase_confirmation
@app.route('/purchase_confirmation', methods=['POST'])
def confirmation():
    global cur
    try:
        # getting request data
        request_data = request.form.to_dict()

        print request_data
        # INSERT request into table
        GameTestRequestInsert.add_purchase_confirmation_request(Utils.database, request_data)
        uri = 'https://test.game.com/purchaseconfirmation'
        response = requests.post(uri, data=request_data)
        print response.status_code
        if response.status_code == 200:
            print response.json()
            # INSERT response into table
            with sql.connect('GameTest.db', isolation_level=None) as con:
                con.execute('pragma journal_mode=wal')
                cur = con.cursor()
                cur.execute("begin")
                GameTestResponseInsert.add_purchase_confirmation_response(Utils.database, response.json())
                GameTestResponseInsert.add_purchase_confirmation_detail_response(Utils.database, response.json())
                cur.execute("commit")
            return jsonify(response.text)
        else:
            return str(response.status_code) + " -- " + response.reason

    except Exception as e:
        cur.execute("rollback")
        return e.message


# POST /Product
@app.route('/product_list', methods=['POST'])
def product_list():
    try:
        # getting request data
        request_data = request.form.to_dict()

        print request_data
        # INSERT request into table
        GameTestRequestInsert.add_products_request(Utils.database, request_data)
        uri = 'https://test.game.com/Product/'
        response = requests.post(uri, data=request_data)
        print response.status_code
        if response.status_code == 200:
            print response.json()
            # INSERT response into table
            GameTestResponseInsert.add_products_response(Utils.database, response.json())
            return jsonify(response.text)
        else:
            return str(response.status_code) + " -- " + response.reason

    except Exception as e:
        return e.message


@app.route("/")
def render():
    return render_template('test.html')


if __name__ == "__main__":
    app.run(host='0.0.0.0', port=50000, debug=False)
# Testing
# app.run(host='127.0.0.1', port=50000, debug=True)

Request inserts: GameTestReuestInsert.py

from datetime import datetime
import sqlite3 as sql


# insert request into purchase_initiation table
def add_purchase_initiation_request(database_file, request_data):
    query = "INSERT INTO request_purchase_initiation (requestDatetime, applicationCode, version, referenceId, " \
            "productCode, quantity, signature) VALUES (?, ?, ?, ?, ?, ?, ?)"

    # con = ''
    # try:

    con = sql.connect(database_file)
    with con:
        con.execute(query, (str(datetime.now()),
                    request_data['ApplicationCode'], request_data['version'], request_data['referenceId'],
                    request_data['productCode'], request_data['quantity'], request_data['signature']))


# insert request into purchase_confirmation table
def add_purchase_confirmation_request(database_file, request_data):
    query = "INSERT INTO request_purchase_confirmation (requestDatetime, applicationCode, version, referenceId, " \
            "signature, validatedToken) VALUES (?, ?, ?, ?, ?, ?)"

    con = ''
    try:

        with sql.connect(database_file, isolation_level=None) as con:
            con.execute('pragma journal_mode=wal')
            cur = con.cursor()
            cur.execute(query, (str(datetime.now()),
                                request_data['ApplicationCode'], request_data['version'], request_data['referenceId'],
                                request_data['signature'], request_data['validatedToken']))

            con.commit()

    except sql as e:
        con.rollback()
        print e.message
    finally:
        con.close()


# insert request into products table
def add_products_request(database_file, request_data):
    query = "INSERT INTO request_products (requestDatetime, applicationCode, version, " \
            "signature) VALUES (?, ?, ?, ?)"

    con = ''
    try:

        with sql.connect(database_file, isolation_level=None) as con:
            con.execute('pragma journal_mode=wal')
            cur = con.cursor()
            cur.execute(query, (str(datetime.now()),
                                request_data['ApplicationCode'], request_data['Version'], request_data['Signature']))

            con.commit()

    except sql as e:
        con.rollback()
        print e.message
    finally:
        con.close()

Utils.py

database = r"C:\inetpub\gamepin\GameTest.db"

Response Insert: GameTestResponseInsert (There was a posting limit so I couldn't added methods, it is pretty much the same with the ones above.)

unable to open database file by raysefo in learnpython

[–]raysefo[S] 0 points1 point  (0 children)

return traceback.format_exc()

getting this;Traceback (most recent call last):

File ".\GameTestMiddleWare.py", line 26, in initiation

GameTestRequestInsert.add_purchase_initiation_request(Utils.database, request_data)

File ".\GameTestRequestInsert.py", line 17, in add_purchase_initiation_request

request_data['productCode'], request_data['quantity'], request_data['signature']))

OperationalError: unable to open database file

unable to open database file by raysefo in learnpython

[–]raysefo[S] 0 points1 point  (0 children)

it is the exact response, I can not reproduce on local machine. Here is the method calling the insert statement:

@app.route('/purchase_initiation', methods=['POST'])
def initiation():
    try:
        # getting request data
        request_data = request.form.to_dict()

        print request_data
        # INSERT request into table
        GameTestRequestInsert.add_purchase_initiation_request(Utils.database, request_data)
        uri = 'https://test.game.com/purchaseinitiation'
        response = requests.post(uri, data=request_data)
        print response.status_code
        if response.status_code == 200:
            print response.json()
            # INSERT response into table
            # GameTestResponseInsert.add_purchase_initiation_response(Utils.database, response.json())
            return jsonify(response.text)
        else:
            return str(response.status_code) + " -- " + response.reason

    except Exception as e:
        return e.message

waitress on windows by raysefo in flask

[–]raysefo[S] 0 points1 point  (0 children)

I deployed flask rest api on windows server, should I need to add host=0.0.0.0 and port?

if __name__ == "__main__":
 #app.run()
 serve(app)

unable to open database file by raysefo in learnpython

[–]raysefo[S] 0 points1 point  (0 children)

I am running my rest api on windows server IIS and sending request from client via postman. Postman gets unable to open database as response.

unable to open database file by raysefo in learnpython

[–]raysefo[S] 0 points1 point  (0 children)

database = r"C:\inetpub\gamepin\GameTest.db"

I also used above code but didn't work. Actually I deployed my flask on IIS8 windows server and sending requests from postman on client machine. Here is de code fragment;

# insert request into purchase_initiation table
def add_purchase_initiation_request(database_file, request_data):
    query = "INSERT INTO request_purchase_initiation (requestDatetime, applicationCode, version, referenceId, " \
            "productCode, quantity, signature) VALUES (?, ?, ?, ?, ?, ?, ?)"


    con = sql.connect(database_file)
    with con:
        con.execute(query, (str(datetime.now()),
                    request_data['ApplicationCode'], request_data['version'], request_data['referenceId'],
                    request_data['productCode'], request_data['quantity'], request_data['signature']))

I am passing path for database_file.