Best way to store a python Decimal object in MongoDB (using with Flask and Jinja)?
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
add a comment |
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
"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
add a comment |
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
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
python mongodb flask pymongo
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
add a comment |
"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
add a comment |
0
active
oldest
votes
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
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
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
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.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
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
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
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
"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