
ButterDB - z_
https://pypi.python.org/pypi/butterdb/0.1.4
======
Widdershin
Hey folks, I'm the author of this library.

I actually renamed it to 'butterdb' a while ago because some people found
fuckitdb hard to swallow. You can check out the code here:
[https://github.com/Widdershin/butterdb](https://github.com/Widdershin/butterdb).
I have grown a bit as a programmer since then, but I appreciate any feedback
you might have.

I actually used this in production against my own recommendation to run the
matching for /r/longboarding's Secret Santa. All of our data came from Google
Forms, so it just made sense.

Hit me up if you have any questions.

~~~
ejr
Thanks for writing this. Do you have plans to extend this to any locally
stored spreadsheets? Ex: Excel, Calc (Libre and Open Office) and so on. I
imagine even XML based documents would still present some vendor quirks to
overcome.

~~~
Widdershin
I have considered it, and just opened an issue to track demand
([https://github.com/Widdershin/butterdb/issues/14](https://github.com/Widdershin/butterdb/issues/14)).
I would probably use another library to handle parsing (and hopefully avoid
some of those pitfalls), just like I rely on gspread to handle all Google
Spreadsheets integration.

If you'd use butterdb if it had that feature, please let me know.

~~~
ejr
Thank you. I would use it right now actually as I do have some spreadsheets
with Google. There are some I'd rather use locally like this and it would be
just a nice extra. It would also avoid the need to maintain a network
connection.

~~~
Widdershin
I'll definitely implement that at some point then. It's quite easy to swap out
the database the model is backed by, so shouldn't be too hard.

------
plq
ORM Stands for Object Relational Mapper. ORMS are software packages that map
objects (class instances) to relational database tables (among other
relational structures) and vice versa.

So maybe I'm nitpicking here but this project is not an ORM. There is no
relational database here. Also it doesn't do joins, doesn't instrument
attributes, makes no effort to convert object hierarchies to flat tables, etc,
etc.

This is a (de)serialization library for google spreadsheets. Not much
different from a CSV, XLS or even html table (de)serializer.

It's a nice hack though and certainly got its uses.

~~~
Widdershin
This is totally true. I simply hadn't thought of a better way to put it than
ORM. I think it could be best put as an object spreadsheet mapper.

~~~
gedrap
Maybe just 'Mapper'? As it is exactly what it does - maps spreadsheets to
Python objects

------
michaelhoffman
I'm surprised this was released under the MIT License. The WTFPL would be more
appropriate.

[http://www.wtfpl.net/](http://www.wtfpl.net/)

~~~
pekk
It would have been more inappropriate. Which could be the goal, I don't know.

But more seriously, it's legally risky to have anything to do with code
licensed under WTFPL because it does not actually specify that you can do
anything with the code without possible legal reprisals, from which no
protection is offered. Probably safe to point and laugh at it, though.

~~~
chazu
Although the WTFPL website
([http://www.wtfpl.net/faq/](http://www.wtfpl.net/faq/)) does note somewhat
ominously that it hasn't been tested in courts, it seems legitimate enough to
me. Is there any evidence outside of its lack of history in court that would
indicate it isn't suitable for production use?

EDIT: gnu.org also says "We do not recommend this license" ,pointing to the
Apache license as providing better protection against 'patent treachery'.
([https://www.gnu.org/licenses/license-
list.html](https://www.gnu.org/licenses/license-list.html))

~~~
Igglyboo
I think the main thing is that even if you literally don't care what the fuck
happens with your code you should at least make a statement that absolves you
of responsibility, such as "THIS SOFTWARE COMES WITH NO WARRANTY" etc.

~~~
sillysaurus3
Has that warranty statement ever been used successfully in any court to defend
anyone against anything? I've always wondered.

And if so, then have the capital letters mattered? Would it be less legally
operative if written in camel case?

~~~
GeneralMayhem
The capitals are generally a response to the "conspicuous" requirement of the
UCC:

(2)Subject to subsection (3), to exclude or modify the implied warranty of
merchantability or any part of it the language must mention merchantability
and in case of a writing must be conspicuous, and to exclude or modify any
implied warranty of fitness the exclusion must be by a writing and
conspicuous. Language to exclude all implied warranties of fitness is
sufficient if it states, for example, that "There are no warranties which
extend beyond the description on the face hereof."

I don't know if the definition of "conspicuous" has ever been tested in court,
but that's the idea. I'd be interested to see it used as ammunition against
clickwrap EULAs, though.

------
timf
This is a good library for interacting with Google spreadsheets, I've written
an app with it:
[https://github.com/burnash/gspread](https://github.com/burnash/gspread)

~~~
canistr
Been using gspread for a couple of months. Love it.

~~~
Widdershin
butterdb is powered by gspread. Definitely a quality library.

------
Yver
I expected it to be a new NoSQL, "eventually consistent" database server.

~~~
rmrfrmrf
ooo that's clever!

------
ZaneA
This was posted to the NZ Python User Group a couple of months back, where a
bit of discussion around the name took place,
[https://groups.google.com/d/msg/nzpug/womO01rqF58/niM48Fn8QA...](https://groups.google.com/d/msg/nzpug/womO01rqF58/niM48Fn8QAUJ)

------
S4M
I'm surprised it wasn't licensed under the WTFPL
([https://en.wikipedia.org/wiki/Do_What_The_Fuck_You_Want](https://en.wikipedia.org/wiki/Do_What_The_Fuck_You_Want))

------
rotten
This could be a really handy way to provide user friendly front ends to "real"
database tables.

------
crampy_cricket
would be really nice to have as an sqlalchemy dialect.

------
freeslugs
Omg! wow this is insane. nice job guys! :)

------
slosh
i really liked fuckitdb better lol

------
ams6110
This is a potentially useful project but I could never use it for fear of
"FuckItDB" appearing in an exception call trace that a client might see.

Names don't have to mean anything, but certain names are still unacceptable.

~~~
theGimp
According to this commit, the name was changed to butterdb about three months
ago.

[https://github.com/Widdershin/butterdb/commit/6a73c9199d53f5...](https://github.com/Widdershin/butterdb/commit/6a73c9199d53f5aeab11fcf58c894e8268794c34)

Digging on PyPI, I found the new package named butterdb. The version is bumped
from .13 to .14, though that might just be the name change. In any case, it
might be a good idea to change the submission to reflect the new name and the
new package.

[https://pypi.python.org/pypi/butterdb/0.1.4](https://pypi.python.org/pypi/butterdb/0.1.4)

~~~
dang
We changed the title and URL to the new name.

~~~
wicker
Any chance we could add a single character flag/prefix to titles on the front
and search pages to indicate post titles which have been changed?

