Skip to content

Instantly share code, notes, and snippets.

@brianv0
Created June 20, 2017 17:31
Show Gist options
  • Save brianv0/d357b95eab66debdf19b53274320a579 to your computer and use it in GitHub Desktop.
Save brianv0/d357b95eab66debdf19b53274320a579 to your computer and use it in GitHub Desktop.
Minimal Marshmallow Demo
from marshmallow import Schema, fields
import json
class Database(Schema):
class Meta:
ordered = True
name = fields.String()
host = fields.String(attribute="conn_host")
port = fields.Integer(attribute="conn_port")
default_schema = fields.Function(lambda obj: obj.default_schema.name)
if __name__ == '__main__':
class Mock(object):
pass
obj = Mock()
default_schema = Mock()
default_schema.name = "my_example"
data = {"name": "test",
"conn_host": "example.com",
"conn_port": 80,
"default_schema": default_schema
}
obj.__dict__.update(data)
db_schema = Database()
print(json.dumps(db_schema.dump(obj).data))
db_schema_basic = Database(only=("name", "host", "port"))
print(db_schema_basic.dumps(obj).data)
@brianv0
Copy link
Author

brianv0 commented Jun 20, 2017

output:

{"name": "test", "host": "example.com", "port": 80, "default_schema": "my_example"}
{"name": "test", "host": "example.com", "port": 80}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment