Как конвертировать Node.js в python - PullRequest
0 голосов
/ 18 января 2020

Привет всем, я хочу преобразовать этот фрагмент кода node.js в python, и я не слишком силен в python. Для небольшой предыстории я выполняю запрос API api для получения данных, я специально хочу извлечь все (поля и значения), которые находятся в одной таблице. так далеко от фрагмента node.js я понимаю, что я читаю текстовый файл, используя для l oop, чтобы перебрать все поля в одной таблице в индексе, но я не знаю, как реализовать это в моем python код. Любые рекомендации, которые могут помочь?

вот файл tables.txt

{"Tables":
    [
        {
            "Name": "Event",
            "EventType": "CSummary",
            "Fields": "*",
            "SortBy": "WhenOccurred",
            "SortType": "Date",
            "Last": "01/14/2020 16:02:00 -05:00"
        }
    ]
}

Вот что я сделал до сих пор, но я не знаю, как продвигаться вперед

scriptfile = open('tables.txt','r+')
r = requests.get(url, headers=headers, json={"script": " this is a work in progress"}, verify=verify)
resources = json.dumps(scriptfile)
for table in range(len(resources):

Вот фрагмент node.js, который я хочу преобразовать.

function GetSecrets(authToken, authCookie, next) {

            let resources = JSON.parse(fs.readFileSync('tables.txt').toString());

            console.log("Tables to get: " + resources.Tables.length);

            // Loop through all the tables to get
            for (let i = 0; i < resources.Tables.length; i++) {
                let thisResource = resources.Tables[i];
                let tableName = thisResource.Name;
                let sortBy = thisResource.SortBy;
                let lastGot = thisResource.Last;
                let fields = thisResource.Fields;
                let sortType = thisResource.SortType;
                let eventType = thisResource.EventType;
                let fileName = '';

                let sql = '';

                if (tableName === 'Event') {
                    sql = "SELECT " + fields + " FROM " + tableName + " WHERE Event.EventType IN ('" + eventType + "') AND " + tableName + "." + sortBy + " > DateFunc('" + lastGot + "') ORDER BY " + tableName + "." + sortBy + ";"

                    fileName = "Event-" + eventType;
                } else {
                    if (sortType === 'None') {
                        sql = "SELECT " + fields + " FROM " + tableName + ";";
                    } else {
                        sql = "SELECT " + fields + " FROM " + tableName + " WHERE " + tableName + "." + sortBy + " > DateFunc('" + lastGot + "') ORDER BY " + tableName + "." + sortBy + ";"
                    }
                    fileName = tableName;
                }


            post_data = JSON.stringify({
                "Script": sql,
            });

Ответы [ 3 ]

1 голос
/ 18 января 2020

Я не знаю, приемлемы ли такие вопросы здесь или нет.

Надеюсь, это поможет вам.

import json

with open('tables.txt') as json_file:
    data = json.load(json_file)
    for p in data['Tables']:
        tableName = p['Name']
        sortBy = p['SortBy']
        lastGot = p['Last']
        fields = p['Fields']
        sortType = p['SortType']
        eventType = p['EventType']
        fileName = ""
        sql = ""

        if (tableName == 'Event'):
            sql = "SELECT " + fields + " FROM " + tableName + " WHERE Event.EventType IN ('" + eventType + "') AND " + tableName + "." + sortBy + " > DateFunc('" + lastGot + "') ORDER BY " + tableName + "." + sortBy + ";"

            fileName = "Event-" + eventType
        else:
            if (sortType == 'None'):
                sql = "SELECT " + fields + " FROM " + tableName + ";";
            else:
                sql = "SELECT " + fields + " FROM " + tableName + " WHERE " + tableName + "." + sortBy + " > DateFunc('" + lastGot + "') ORDER BY " + tableName + "." + sortBy + ";"

            fileName = tableName

print(sql)
0 голосов
/ 18 января 2020

эта работа для вас:

import json
def GetSecrets(resources):
    resources = json.load(open("tables.txt"))
    print(f"Tables to get: {len(resources)}")
    for resource in resources.values():    
        tableName = resource[0]["Name"]
        sortBy = resource[0]["SortBy"]
        lastGot = resource[0]["Last"]
        fields = resource[0]["Fields"]
        sortType = resource[0]["SortType"]
        eventType = resource[0]["EventType"]        
        if tableName == "Event":
            sql = "SELECT " + fields + " FROM " + tableName + " WHERE Event.EventType IN ('" + eventType + "') AND " + tableName + "." + sortBy + " > DateFunc('" + lastGot + "') ORDER BY " + tableName + "." + sortBy + ""
            fileName = "Event-" + eventType
        elif sortType=="None":
            sql = "SELECT " + fields + " FROM " + tableName + ""
        else:
            sql = "SELECT " + fields + " FROM " + tableName + " WHERE " + tableName + "." + sortBy + " > DateFunc('" + lastGot + "') ORDER BY " + tableName + "." + sortBy + ""
            fileName = tableName
    return f"Script: {sql}"
0 голосов
/ 18 января 2020

Этот вопрос не подходит для переполнения стека. У вас нет специфической c проблемы с вашим кодом.

Вы можете здесь узнать, как перебирать массив в Python.

Если ваш resources является "сложным" объектом, тогда вы, вероятно, захотите прочитать о словарях .

...