Best way to store a python Decimal object in MongoDB (using with Flask and Jinja)?












0















So I'm creating an app that uses monetary data. I am using Flask for my app and storing data using Flask-pymongo (basically pymongo with some HTTP functionalities).



From my understanding - Flask doesn't have a Decimal object, so you have to cast the monetary value to Decimal128 (a BSON object).



Now, when I retrieve the value, I want to be able to manipulate it on the frontend (e.g. displaying totals), and the way I do it is this way:



data['data']['venue']['ATM']|string|float



As you can see, there is A LOT of casting going on. From Decimal -> Decimal 128 -> string -> float



Surely, I'm doing it in a very inefficient way and there has to be a better way. If there is, please let me know. Something about the multiple castings just feels wrong to me. If this way is totally okay - let me know as well



Thank you!










share|improve this question























  • "As you can see, there is A LOT of casting going on. From Decimal -> Decimal 128 -> string -> float" I don't see the conversions. More than half of that are just dictionary keys.

    – roganjosh
    Jan 2 at 21:20











  • @roganjosh Sorry for the confusion, the object being stored in Mongo is stored as data['data']['venue']['ATM']

    – Shafiq Mohammed
    Jan 2 at 22:00











  • So the process is: Convert Decimal Value to Decimal128, store into mongodb. Retrieve value from mongo, convert to str first because I can't convert straight from Decimal128 to float. So Decimal128 -> str -> float

    – Shafiq Mohammed
    Jan 2 at 22:01


















0















So I'm creating an app that uses monetary data. I am using Flask for my app and storing data using Flask-pymongo (basically pymongo with some HTTP functionalities).



From my understanding - Flask doesn't have a Decimal object, so you have to cast the monetary value to Decimal128 (a BSON object).



Now, when I retrieve the value, I want to be able to manipulate it on the frontend (e.g. displaying totals), and the way I do it is this way:



data['data']['venue']['ATM']|string|float



As you can see, there is A LOT of casting going on. From Decimal -> Decimal 128 -> string -> float



Surely, I'm doing it in a very inefficient way and there has to be a better way. If there is, please let me know. Something about the multiple castings just feels wrong to me. If this way is totally okay - let me know as well



Thank you!










share|improve this question























  • "As you can see, there is A LOT of casting going on. From Decimal -> Decimal 128 -> string -> float" I don't see the conversions. More than half of that are just dictionary keys.

    – roganjosh
    Jan 2 at 21:20











  • @roganjosh Sorry for the confusion, the object being stored in Mongo is stored as data['data']['venue']['ATM']

    – Shafiq Mohammed
    Jan 2 at 22:00











  • So the process is: Convert Decimal Value to Decimal128, store into mongodb. Retrieve value from mongo, convert to str first because I can't convert straight from Decimal128 to float. So Decimal128 -> str -> float

    – Shafiq Mohammed
    Jan 2 at 22:01
















0












0








0








So I'm creating an app that uses monetary data. I am using Flask for my app and storing data using Flask-pymongo (basically pymongo with some HTTP functionalities).



From my understanding - Flask doesn't have a Decimal object, so you have to cast the monetary value to Decimal128 (a BSON object).



Now, when I retrieve the value, I want to be able to manipulate it on the frontend (e.g. displaying totals), and the way I do it is this way:



data['data']['venue']['ATM']|string|float



As you can see, there is A LOT of casting going on. From Decimal -> Decimal 128 -> string -> float



Surely, I'm doing it in a very inefficient way and there has to be a better way. If there is, please let me know. Something about the multiple castings just feels wrong to me. If this way is totally okay - let me know as well



Thank you!










share|improve this question














So I'm creating an app that uses monetary data. I am using Flask for my app and storing data using Flask-pymongo (basically pymongo with some HTTP functionalities).



From my understanding - Flask doesn't have a Decimal object, so you have to cast the monetary value to Decimal128 (a BSON object).



Now, when I retrieve the value, I want to be able to manipulate it on the frontend (e.g. displaying totals), and the way I do it is this way:



data['data']['venue']['ATM']|string|float



As you can see, there is A LOT of casting going on. From Decimal -> Decimal 128 -> string -> float



Surely, I'm doing it in a very inefficient way and there has to be a better way. If there is, please let me know. Something about the multiple castings just feels wrong to me. If this way is totally okay - let me know as well



Thank you!







python mongodb flask pymongo






share|improve this question













share|improve this question











share|improve this question




share|improve this question










asked Jan 2 at 21:18









Shafiq MohammedShafiq Mohammed

61




61













  • "As you can see, there is A LOT of casting going on. From Decimal -> Decimal 128 -> string -> float" I don't see the conversions. More than half of that are just dictionary keys.

    – roganjosh
    Jan 2 at 21:20











  • @roganjosh Sorry for the confusion, the object being stored in Mongo is stored as data['data']['venue']['ATM']

    – Shafiq Mohammed
    Jan 2 at 22:00











  • So the process is: Convert Decimal Value to Decimal128, store into mongodb. Retrieve value from mongo, convert to str first because I can't convert straight from Decimal128 to float. So Decimal128 -> str -> float

    – Shafiq Mohammed
    Jan 2 at 22:01





















  • "As you can see, there is A LOT of casting going on. From Decimal -> Decimal 128 -> string -> float" I don't see the conversions. More than half of that are just dictionary keys.

    – roganjosh
    Jan 2 at 21:20











  • @roganjosh Sorry for the confusion, the object being stored in Mongo is stored as data['data']['venue']['ATM']

    – Shafiq Mohammed
    Jan 2 at 22:00











  • So the process is: Convert Decimal Value to Decimal128, store into mongodb. Retrieve value from mongo, convert to str first because I can't convert straight from Decimal128 to float. So Decimal128 -> str -> float

    – Shafiq Mohammed
    Jan 2 at 22:01



















"As you can see, there is A LOT of casting going on. From Decimal -> Decimal 128 -> string -> float" I don't see the conversions. More than half of that are just dictionary keys.

– roganjosh
Jan 2 at 21:20





"As you can see, there is A LOT of casting going on. From Decimal -> Decimal 128 -> string -> float" I don't see the conversions. More than half of that are just dictionary keys.

– roganjosh
Jan 2 at 21:20













@roganjosh Sorry for the confusion, the object being stored in Mongo is stored as data['data']['venue']['ATM']

– Shafiq Mohammed
Jan 2 at 22:00





@roganjosh Sorry for the confusion, the object being stored in Mongo is stored as data['data']['venue']['ATM']

– Shafiq Mohammed
Jan 2 at 22:00













So the process is: Convert Decimal Value to Decimal128, store into mongodb. Retrieve value from mongo, convert to str first because I can't convert straight from Decimal128 to float. So Decimal128 -> str -> float

– Shafiq Mohammed
Jan 2 at 22:01







So the process is: Convert Decimal Value to Decimal128, store into mongodb. Retrieve value from mongo, convert to str first because I can't convert straight from Decimal128 to float. So Decimal128 -> str -> float

– Shafiq Mohammed
Jan 2 at 22:01














0






active

oldest

votes












Your Answer






StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");

StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);

StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});

function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});


}
});














draft saved

draft discarded


















StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f54013320%2fbest-way-to-store-a-python-decimal-object-in-mongodb-using-with-flask-and-jinja%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown

























0






active

oldest

votes








0






active

oldest

votes









active

oldest

votes






active

oldest

votes
















draft saved

draft discarded




















































Thanks for contributing an answer to Stack Overflow!


  • Please be sure to answer the question. Provide details and share your research!

But avoid



  • Asking for help, clarification, or responding to other answers.

  • Making statements based on opinion; back them up with references or personal experience.


To learn more, see our tips on writing great answers.




draft saved


draft discarded














StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f54013320%2fbest-way-to-store-a-python-decimal-object-in-mongodb-using-with-flask-and-jinja%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown





















































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown

































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown







Popular posts from this blog

MongoDB - Not Authorized To Execute Command

How to fix TextFormField cause rebuild widget in Flutter

in spring boot 2.1 many test slices are not allowed anymore due to multiple @BootstrapWith