# #python #mongodb #go #cgo #ctype
Вопрос:
Я пытаюсь расширить свой код python с помощью golang, чтобы использовать goroutines. Я хочу получить документы из mongo в нескольких горотинах и отправить их обратно в модуль python. Теперь моя главная проблема заключается в преобразовании типов данных между go и python. Например, как я могу отправить результат fetchModelInstances в python?
main.py
from ctypes import *
from pathlib import Path
here = Path(__file__).absolute().parent
so = cdll.LoadLibrary(str(here / "fetch.so"))
fetchObjects = so.fetchObjects
p = fetchObjects()
главное.вперед
package main
import "C"
import (
"context"
"fmt"
"go.mongodb.org/mongo-driver/bson"
"go.mongodb.org/mongo-driver/mongo"
"go.mongodb.org/mongo-driver/mongo/options"
"time"
)
//export fetchObjects
func fetchObjects() {
ids := []int{86, 971526}
fetchModelInstances(ids)
}
func fetchModelInstances(value []int) []bson.M {
ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
defer cancel()
client, _ := mongo.Connect(ctx, options.Client().ApplyURI("mongodb://localhost:27017"))
collection := client.Database("blog").Collection("post")
cur, _ := collection.Find(ctx, bson.M{"_id": bson.M{"$in": value}})
var res []bson.M
err := cur.All(ctx, amp;res)
if err != nil {
fmt.Println(err.Error())
}
return res
}
func main() {}
Комментарии:
1. это трудно преобразовать go-obj в python-obj, в общем случае, используя json(строка) ->
return json.Marshal(res)