Передача строки из Python в качестве параметра функции Go в общем объекте - PullRequest
2 голосов
/ 18 мая 2019

Я пытаюсь вызвать приведенную ниже функцию MakeQuery(query string), передав строку из Python с использованием модуля ctypes.

Она работает, когда я вызываю ее из Python как общий объект функции с жестко закодированными аргументами изWorks() in Go:

//export Works
func Works() {
    newMod := MakeQuery(`SELECT TOP 3 NodeID FROM NCM.ConfigArchive`)
    fmt.Println(newMod)
}

// Query db connection and return results as map
//export MakeQuery
func MakeQuery(query string) []map[string]interface {} {...}

Согласно некоторым веб-учебникам, мне нужно преобразовать его следующим образом:

from ctypes import *

lib = cdll.LoadLibrary("./test.so")
query = "SELECT TOP 3 NodeID FROM NCM.ConfigArchive"
b_query = query.encode('utf-8')
lib.MakeQuery.argtypes = [c_char_p]
print lib.MakeQuery(b_query)

Но он не работает из-за преобразования некоторых строковых типовошибка:

&{400 Bad Request 400 HTTP/1.1 1 1 map[Content-Length:[1602] Content-Type:
[application/json] Date:[Sat, 18 May 2019 12:48:54 GMT] Server:[Microsoft-
HTTPAPI/2.0]] 0xc00009a1c0 1602 [] false false map[] 0xc000104000 0xc0001a8000}

Было бы очень полезно, если бы кто-то мог указать мне направление, в котором каким-либо образом преобразовать строковый тип Python в Go.

...