Slashdot Mirror


F/OSS Flat-File Database?

Leemeng writes "I'm looking for a simple, free, and F/OSS flat-file database program. I'm storing info about Wi-Fi access points that I come across, maybe 8-9 fields per entry. I've outgrown Notepad. This info is for my own reference only; it is not going on a Web server. Googling was unhelpful, with results skewed towards SQL, Access (MS), and Oracle, all of which would be overkill for my purposes. My criteria are: it must be simple, F/OSS, must work in Windows Vista, preferably use a portable format, must not be an online app, and must not require Java. Does such a beast exist?"

132 of 702 comments (clear)

  1. Python? by fyngyrz · · Score: 5, Informative

    Can't be Java... well, how about Python?

    Here is a completely free (PD, not GPL-style "you're free to do as we tell you") database engine that will do what you have described thus far.

    The database engine is about 19k bytes (not a typo), has no dependencies (other than Python itself), supports a useful subset of SQL so you can actually create flexible queries that produce well-sorted results from your database, and it works everywhere Python does, which is to say, it works pretty much everywhere. It's just as happy operating on a command line as it is on a web server. The results (the actual databases) are 100% portable from OS to OS. I use it on various linuxes, OS X, and Windows for tasks very similar to yours.

    Comes with tutorial examples, sample databases and extensive docs. In a 13k (not a typo) archive.

    :-)

    --
    I've fallen off your lawn, and I can't get up.
    1. Re:Python? by maxume · · Score: 5, Insightful

      Why not sqlite? Comes with Python 2.5 on Windows. It adds a relatively weighty 800k or so to my python installation on Windows, but the installation is dozens of megabytes overall, so it doesn't really matter.

      --
      Nerd rage is the funniest rage.
    2. Re:Python? by goombah99 · · Score: 5, Interesting

      You need YAML

      I think is exactly what you are requesting.

      --
      Some drink at the fountain of knowledge. Others just gargle.
    3. Re:Python? by fyngyrz · · Score: 3, Informative

      No, it isn't just that. It is used to show that what you are quoting is verbatim, for instance in cases where an assertion is unique, questionable, or worded unusually. This also works for obvious spelling errors, of course.

      --
      I've fallen off your lawn, and I can't get up.
    4. Re:Python? by solferino · · Score: 2, Interesting

      GPL-style "you're free to do as we tell you"
      Care to tell me exactly what the user of GPL software is not free to do? Otherwise maybe you'd like to retract your casual FUD-spreading aside.
    5. Re:Python? by Facetious · · Score: 4, Funny

      Look, now you are just contradicting everything. He came here for an argument.

      --
      Let us not become the evil that we deplore.
    6. Re:Python? by el+americano · · Score: 4, Funny

      YAML is a recursive acronym for ...

      Next!

      --
      Those are my principles. If you don't like them I have others. -Groucho Marx
    7. Re:Python? by fyngyrz · · Score: 4, Informative

      Why not sqlite?

      • SQLite isn't present or compiled in, in all Python installations, 2.5 or otherwise
      • At 800k, it's about 50x the size of class dbtxt (executable)
      • Source is huge compared to class dbtxt, so maintainance is not easy
      • SQLite is considerably more difficult to use (it's also more capable, though)

      That's all I have for ya, offhand. ;-)

      --
      I've fallen off your lawn, and I can't get up.
    8. Re:Python? by goombah99 · · Score: 4, Interesting

      YAML meets the flat file requirement and can be made to be the persistent DB behind Python, Perl, Ruby.

      If it were not for the Flat File requirement then a simple Python shelve or Perl Tie would be the most logical solution since they are both part of the standard library so don't require installing libs on random computers you might use or port to.

      of those two Perl Tie is probably the most suited because it's backed by a real DB operating off the disk not fully in memory.

      But why not do both: use YAML as the DB backing the Perl Tie.
        then you get a nice human readable flat file.

      --
      Some drink at the fountain of knowledge. Others just gargle.
    9. Re:Python? by ehrichweiss · · Score: 5, Informative

      Well that assertion was a massive FAIL. I make quite a living thanks to the GPL and I know tons of others who do the same.

      --
      0x09F911029D74E35BD84156C5635688C0
    10. Re:Python? by fyngyrz · · Score: 5, Insightful

      Care to tell me exactly what the user of GPL software is not free to do? Otherwise maybe you'd like to retract your casual FUD-spreading aside.

      I can't legally utilize GPL'd source code within a commercial application without doing some very specific (and not always possible) things that the GPL license instructs me I must do. Any other ways I can help with your basic F/OSS education? I'll be here all day.

      --
      I've fallen off your lawn, and I can't get up.
    11. Re:Python? by Anonymous Coward · · Score: 3, Insightful

      Hooray, falsehoods!
      You're more than welcome to use with any other software, you just can't distribute.

    12. Re:Python? by Facetious · · Score: 5, Funny

      Great. Now I'm going to have to call Red Hat and tell them their profits aren't real. I always hate to make that call. Just last week I had to tell Steve Ballmer that chair!=discus||frisbee. He was pissed.

      --
      Let us not become the evil that we deplore.
    13. Re:Python? by Nwallins · · Score: 2, Informative

      I can't legally utilize GPL'd source code within a commercial application without doing some very specific (and not always possible) things that the GPL license instructs me I must do. You can use the software all you want. Just don't distribute it.
    14. Re:Python? by fyngyrz · · Score: 2, Informative

      Yes, that's pretty much what I said, only with more details. What's your point?

      --
      I've fallen off your lawn, and I can't get up.
    15. Re:Python? by aweraw · · Score: 5, Insightful

      Mod parent up.

      IMO, the people who still, after all these years, haven't figured out how to make money with GPL software are the failures, not the GPL.

      Its just a software license; it doesn't preclude you from charing money for your work, and it doesn't mandate you make your work avaiable to the general public. I can't fathom why some seemingly intelligent people have such a hard time grasping this concept.

      --
      5468652047616D65
    16. Re:Python? by moderatorrater · · Score: 5, Interesting

      I'm missing your point I believe. Or being purposely obtuse which you (probably rightfully) feel you can get away with because this is a very GPL friendly forum. BSD, MIT, etc licenses allow you to do whatever you want with the code with none of the strings that the GPL has. Your false dichotomy between GPL and closed source doesn't really help promote a useful dialog about freedom of source.
    17. Re:Python? by Anonymous Coward · · Score: 2, Insightful

      fyngyrz, what's with the inflammatory anti-GPL remark that's not even relevant to the topic at hand?

      I'm a huge fan of the GPL, but when I refer someone to BSD software I don't stick in useless remarks about it being the license that's "free for selfish pricks who want to enjoy the benefits of freedom for themselves while depriving others of same".

      Give it a rest -- that chip on your shoulder is neither useful nor attractive. There's nothing wrong with choosing to share unconditionally, and there's nothing wrong with choosing to share with those who choose to share.

      Plus you've mischaracterized the GPL -- it remains free to *use* unconditionally, the strings are attached only to redistribution.

    18. Re:Python? by fyngyrz · · Score: 3, Insightful

      But you can do this with non-free software's source? I'm missing your point I believe.

      Yes, you missed the point. You can do it with PD software, specifically with the software in the post that this thread depends from (class dbtxt.) PD source allows you more freedom(s) at the user end. GPL source allows you (a lot) more control at the author end.

      --
      I've fallen off your lawn, and I can't get up.
    19. Re:Python? by dixonpete · · Score: 5, Informative

      There's an add-on for Firefox that makes SQlite use fairly painless: SQLite Manager. Brilliant work.

    20. Re:Python? by Anonymous Coward · · Score: 5, Funny

      no he didn't. he came here for abuse.

    21. Re:Python? by fyngyrz · · Score: 2, Interesting

      For most GPL projects, this is what it means. How is that unreasonable??

      Did I say it was unreasonable? It's your code, you're free to put any conditions you want on it. I encourage you to do so. PD, GPL, BSD, commercial, etc., that's your call. With these choices come consequences to the end users of the application and/or the source code, though, and there's no squirming out of them.

      What I said was that the GPL imposes "you're free to do as we tell you" conditions while holding up PD in contrast. Which is precisely accurate. PD doesn't impose such conditions; hence PD is a feature offered as compared to any GPL'd alternative. Since it is a feature that directly improves usability and lightens the conditions under which the user can sell, modify and redistribute the source code, I find it well worth mentioning.

      --
      I've fallen off your lawn, and I can't get up.
    22. Re:Python? by morgan_greywolf · · Score: 4, Funny

      Abuse is down the hall, room 164a, I think.

    23. Re:Python? by NMerriam · · Score: 2, Interesting

      If you are not making your work publicly available why use the GPL?


      Just because you don't necessarily want/need to make it public doesn't mean you want to distribute it as binary-only or not be able to use other GPL code in the development or expand it in unforeseen ways in the future.

      I'm not a programmer, but in one of my past jobs I used to hire developers for projects. One of the caveats I applied to everything we did was that it had to be GPLed, partly for flexibility down the line if we needed to modify it or distribute it to partners (gov't and universities), but also because the nature of the work was such that 95% of the foundations already existed in other GPL projects, all we needed was customization to our particular workflow. It's no secret that a lot of free software is only usable by techs, and much of what I was doing was developing user-friendly interfaces for our employees, and then paying to have the backend made functional.

      But we never had the software available for the public, just because they'd have little interest in it as it was so customized for our particular use and I'm sure some of the very situation-specific code was fairly hacky. I know the developers did push patches upstream when it made sense, and I encouraged them to do so and even paid for more hours here and there to make sure the code was clean enough to do that. I strongly suspect that most developers who make a living with GPL/BSD software (other than employees of Red Hat and Mozilla and the like) pay their rent on projects like this. It's a great symbiotic relationship between the GPL software community and private enterprise.
      --
      Recursive: Adj. See Recursive.
    24. Re:Python? by DAldredge · · Score: 2, Interesting

      How do proprietary licenses victimize others?

    25. Re:Python? by sticks_us · · Score: 3, Interesting

      I'm late to the party, and there are certainly a ton of other good suggestions, but I just had to pipe in and cast another vote for YAML.

      Even if you don't end up using it for this particular app, it definitely deserves a look. Although it'll never displace XML, it definitely answers at least some of the questions XML attempts to answer, reduces "tag bloat," and is easy on the eyes.

      --
      "Beware of bugs in the above code; I have only proved it correct, not tried it." -- Donald Knuth
    26. Re:Python? by morgan_greywolf · · Score: 5, Insightful

      He said he wanted a flat-file database. Why, on this Earth, would he ever need "standard SQL including joins." SQL is designed for relational databases and, in particular, joins are only EVER used in a multi-table, relational database. In fact, the guy even said "SQL is overkill".

      IOW, SQLite, as "lite" as it is compared to Oracle, MySQL, PostgreSQL, etc. is still overkill.

      I'm with the GP -- dbtxt looks really cool. Although, I do gotta say that OpenOffice.org would fit the bill just fine for what his requirements are: Calc can be used as a flat-file database, and I think there is support for simple CSV databases in Base.

    27. Re:Python? by QuantumG · · Score: 3, Insightful

      Uhh.. is that an honest question?

      Proprietary licensing is specifically designed to make the licensee dependent on the licenser. If there's bugs in the software then the licensee can't fix it and there is only one place the licensee can go to get the bugs fixed, the licenser, who is free to refuse to fix the bugs or demand exhorbinate fees to do so. Same with new features or support.

      If you wouldn't do this to someone directly then giving code to someone else so they can do it is unethical.

      --
      How we know is more important than what we know.
    28. Re:Python? by smilindog2000 · · Score: 3, Informative

      I'll throw out a shameless plug for something totally unsuitable for what the poster wants: datadraw. It's an in-memory super-high-performance (think raw C code or better - not SQL), database generator that I've not only had a lot of fun with, but which now supports well over 1M lines of algorithmic code - some of the most high performance stuff around.

      --
      Beer is proof that God loves us, and wants us to be happy.
    29. Re:Python? by smilindog2000 · · Score: 4, Informative

      Grr... some shameless link! Should have checked it: datadraw

      --
      Beer is proof that God loves us, and wants us to be happy.
    30. Re:Python? by fyngyrz · · Score: 4, Interesting

      Having a db that is human readable can be a good thing--and a bad thing (anyone can change its contents manually?). Being small is a good thing. But even if you are doing embedded programing, is 800k such a burden that you would give up this feature set?

      Sure, it can be. For instance, adding 800k of stuff to your application means that you are giving up control. You might have the source (which is going to be somewhat larger in this case)... but do you have the time to dig into it if there's a problem? Does reporting the problem necessarily mean it's even going to get fixed? For instance, I've reported many problems to various authors, some of which got fixed, some didn't. Likewise, adding a feature can be non-trivial with a large (source code) project. Compare that to a very lightweight thing that, let's say, almost does what you want but you just need feature X. Might be a whole lot easier to add that to a 20k "almost-there" set of source than megabytes of source, is that not possible?

      Distribution of a class module with a python app is an entirely trivial thing to do. For that matter, you can take the class and put it in the same file with your application if that appeals, giving you the advantages of atomic distribution -- harder for an end-user to separate things and make whole app, as you handed it to them, fail to work.

      And I suppose the elephant in the room is that the end user may have no need for the features. I sell a commercial program with features not available in other programs in the same general application space, functionality-wise; that doesn't mean it will sell to anyone on that basis unless they actually need those features, right? In this specific case, based on the article, the needs described seemed to be met by what I'd written, and hence my post.

      PostgreSQL whips the living hoo-ha out of SQLite; it is larger, but offers more features (sound familiar?) Yet SQLite has a place, as your advocacy clearly indicates. I would venture that the difference between SQLite and class dbtext is similar, just occupies another place on the size/features scale. In the end, the user, based on their requirements, may go "what a POS" and step up the ladder. From either one.

      OK, dbtxt looks interesting, but SQLite is very stable

      dbtxt also seems to be very stable. It's never failed for me, nor have I ever received any indication that it wasn't doing what it was supposed to do when used as indicated. Also -- as a user myself -- I'm quite interested in fixing it, should it turn out to have problems.

      Also, just as an aside, If someone can explain cross-platform file locking in python to me in terms I can understand, and if python's ability to lock can be made to implement a reasonable form of "wait for lock to release", I'd like to add that as a feature, too. I found python's docs on locking to be more than a little opaque. I'm sure it's just me.

      --
      I've fallen off your lawn, and I can't get up.
    31. Re:Python? by scott_karana · · Score: 2, Insightful

      I wish the GPL was more permissive, myself; while it needn't be as open as BSD and MIT licenses, it'd be nice to allow for similar but incompatible licenses like the CDDL to link with it.

      In before "Use LGPL": we'll never see ZFS in the Linux kernel because of the above problem, unless Sun decides to get rid of the clauses that make you immune to patent suit from them.

    32. Re:Python? by QuasiEvil · · Score: 2, Informative

      Use it in any project that isn't GPL'd. Agreed - this is a particular problem when it comes to library code that folks have either intentionally or ignorantly GPL'd. If I'm not modifying the library code, just using it, I don't want to have to jump through hoops on the calling interface. I don't want to have to build as a shared library with a runtime link. It's a pain, and an unnecessary headache. I'm more than happy to help distribute the source I built against, but I don't want it GPLing my app in the process.

      So, the freedom I want is the freedom to license my code as I see fit, while still making use of the high quality of free software (libraries) and supporting them with bugfixes, patches, and another distribution point. With the GPL, you're really only free to make more GPL software. Part of freedom is allowing people to do things you don't like and/or don't agree with. That part seems to have been lost here.

      I've been moving my own personal released code to BSD lately, and my professional code, well, is largely internal apps for my employer.

    33. Re:Python? by fyngyrz · · Score: 4, Insightful

      ...the licenser, who is free to refuse to fix the bugs or demand exhorbinate fees to do so. Same with new features or support.

      To be fair, a proprietary licenser is also free to fix the bugs ASAP and well, provide such fixes for free, also to provide new features for free if they like. I do this all the time with a commercial application. A PD author also retains such freedom. These are not benefits that exclusively arrive via the GPL. And it is well to consider that with a GPL, PD or commercial application, one is free to demand money to fix something, to add features to it, to explain or teach its use, or even to simply use it. Doesn't mean you'll get it, but it doesn't mean you won't, either.

      If you wouldn't do this to someone directly then giving code to someone else so they can do it is unethical.

      I don't think you've really analyzed this far enough. Giving someone something, and then telling them what they can and cannot do with it, carries ethical problems in the form of imposing your will on someone else (and it also devalues the gift, in my personal opinion.)

      "Here's a gift of a book; but you can only read it if you use LED lights." "Here's a gift of a cat; but you can only have it if you'll eat it." "Here's a gift of a some money, but you must spend it upon me."

      You see? This is why the term "freedom" has always seemed to go so poorly with the coercive requirements that the GPL applies to the various recipients in the chain of "gifts."

      --
      I've fallen off your lawn, and I can't get up.
    34. Re:Python? by legutierr · · Score: 5, Interesting

      He said he wanted a flat-file database. Why, on this Earth, would he ever need "standard SQL including joins." SQL is designed for relational databases and, in particular, joins are only EVER used in a multi-table, relational database. In fact, the guy even said "SQL is overkill". First of all, my point was that in comparison to a python-only tool like dbtxt, sqlite is probably worth the additional memory overhead of a couple hundred kilobytes.

      Second, I'm not sure that you know any better than I do what the poster really needs. Open office calc might be an option, but certainly not if 800k is too much space; open office is what, like 200 megs? And dbtxt might also be an option, if doing everything in Python is what the person wants; I love Python, but there are plenty of people who don't. I'm sure that all three proposals are equally valid.

      Now, to defend SQLite: in most cases, dealing with a relational database is "overkill" not because of SQL per se, but because of the fact that software needs to be installed and configured*, and because complex sets of processes need to be managed and maintained. SQLite is useful, in part, because it provides the functionality of a relational database without the complexity of the engine. Now, if you don't want or need SQL, then you might not consider that particular feature to be of particular benefit. Nonetheless, there are many situations where SQL might not be required, but where it might be useful, where in the past SQL might not have been used, but where now, because of SQLite, it will be used. There are very few cases where real-world information is not most accurately represented as relational data (in comparison to flat data). SQLite allows you to avoid making compromises regarding the way that that data is stored. And SQLite is fast.



      *(Although some interpreted languages might require that sqlite's libraries be installed on a system for it to be used by a program, that is not the case for compiled languages like C, C++, Obj-C, etc., where the sqlite libraries can be compiled directly into the code distributed to end users.)
    35. Re:Python? by MSG · · Score: 2, Informative

      I'm sure it's just me.

      It's not just you. Python exposes the locking mechanisms of the underlying platform and doesn't try to abstract any further than that.

      If you want simple, portable locking, use this recipe from ASPN:
      http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/65203

    36. Re:Python? by fyngyrz · · Score: 4, Insightful

      I can only imagine you are being dense on purpose

      Your imagination, not to put too fine a point on it, has failed you.

      You are going around saying that the GPL has restrictions on use. It does not

      Yes, in fact, it does.

      I have come across a snippet of GPL'd source code. I want to use it in my gigabyte of source code commercial app, which, prior to such inclusion, is legally mine to distribute, which is a use I make of this object, that is, my application. However, as quite common in commercial efforts, I cannot legally distribute the source code of my application. So, one day I use the GPL'd source code by compiling said GPL source into the commercial app. I mod it to better suit my use of it. My app is suddenly subject to a change in usability, imposed by the GPL, such that I no longer have the option of using the same way (which act can also be characterized as distribution) to earn money, and my customers no longer have the option to use my altered application. This viral alteration of the usability of my application is entirely courtesy of the GPL. In order to reverse this alteration and keep the code snippet in use in the application, I must perform actions that I actually do not have the option of choosing due to previously existing obligations (essentially source code distribution.) The end result is that the GPL'd code cannot be used if the commercial application is to remain usable.

      To be blunt, the word "use", (as well as all of its natural permutations) which you depend upon so heavily in your flawed analysis, doesn't have the limited meaning you wish it had — nor has it ever, or will it ever, have such a limited meaning. This is why your argument is specious.

      --
      I've fallen off your lawn, and I can't get up.
    37. Re:Python? by fyngyrz · · Score: 2, Informative

      But sqlite is on a totally different level of reliability; the fact that it is at the core of the iPhone's data management points to the level of confidence that people have in it.

      Wait a sec... That's not reliability; that's confidence. Reliability is a performance metric; confidence is not. I suspect — looking at some relevant SQLite pages — that dbtext might actually be more reliable, because my bug list is at zero and has never moved off zero since release, though it is used thousands of times every day just in my own venues. I have no idea how much others use it, though. ;-)

      --
      I've fallen off your lawn, and I can't get up.
    38. Re:Python? by The+End+Of+Days · · Score: 2, Funny

      So to sum up your post, you're free to do whatever you want, so long as we tell you that you can.

      Yeah, I don't think you made your point too well. Now ease down, sparky.

    39. Re:Python? by Hes+Nikke · · Score: 3, Funny

      SQL is designed for relational databases and, in particular, joins are only EVER used in a multi-table, relational database. I would like to know more about this single table relational database concept you just implied exists, where should I start reading? ;)
      --
      Don't call me back. Give me a call back. Bye. So yeah. But bye our, well, but alright we are on a shirt this chill.
    40. Re:Python? by Hal_Porter · · Score: 2, Funny

      I would like to know more about this single table relational database concept you just implied exists, where should I start reading? ;) Mod parent up. Pointing out subtle redundancy in statements in technical discussions is always Informative.
      --
      echo -e 'global _start\n _start:\n mov eax, 2\n int 80h\n jmp _start' > a.asm; nasm a.asm -f elf; ld a.o -o a;
    41. Re:Python? by mlwmohawk · · Score: 2, Interesting

      With PD code, you *do* own the code. Everyone owns the code. So you can do anything you want. Now that is good manners.

      There is a philosophical position that I think is important. The term "share and share alike" is something that most kids have learned in childhood for centuries for the greater good of society. The GPL simply puts that in the license.

      I am a capitalist, seriously, I honestly think that real people deserve real compensation for their work. Actually, let me rephrase that, people have the right to try to get compensation for their work.

      The BSD license makes no philosophical statement, and that is sad. I honestly believe that if you put your code out there for someone to use you should try to get something for it. Your life, the time you spend writing the code, is valuable. Make it worth something.

    42. Re:Python? by jhol13 · · Score: 3, Informative

      dbtxt can only handle ASCII (<128 so even ISO-8859-1, etc. are no-no). This can be killer (it is for me).

      Other than that the dbtxt looks very nice indeed.

    43. Re:Python? by Binary+Boy · · Score: 3, Informative

      Never used a self join? I mean I'm no relational database theorist, so maybe you're correct on some level, but one can certainly create relationships between data stored in a single table.

    44. Re:Python? by totally+bogus+dude · · Score: 5, Funny

      That'd make the first one a shameful link, yes?

    45. Re:Python? by lysse · · Score: 2, Insightful

      Them's the breaks, if you want to use the code. If the licensing terms of the GPL are too onerous for you, then that's fine - don't use it. Just don't try to bullshit the rest of us because you're peeved that you can't have a freebie. It makes you look cheap and awfully transparent.

    46. Re:Python? by abigor · · Score: 2, Insightful

      I use it every day in my business - works great. But now my happiness is tainted by my victimhood. Perhaps spending some of those thousands of dollars I've saved on phone calls will make me feel better though.

      In other words: get some perspective. People who get raped or murdered are victims. People who use proprietary application software run the spectrum from happy users to suckers, but that's about it.

    47. Re:Python? by Jason+Earl · · Score: 4, Insightful

      Why should the GPL hackers share with you if you aren't willing to share with them?

      You don't like their license. That's fine, they don't like your license either.

    48. Re:Python? by kjots · · Score: 2, Informative

      (God, I don't know why I keep reading Slashot comments, I really don't; but I guess an eleven year habit habit is hard to break...)

      Let's start with the obvious, shall we?

      With the GPL, you're really only free to make more GPL software.

      That's the whole bloody point, except that instead of that second 'GPL' you should be saying 'copyleft'. The GPL and other copyleft licenses are specifically designed to prevent covered code from being used in non-copyleft projects. It's a basic design principal!

      ... the freedom I want is the freedom to license my code as I see fit ...

      You still have that freedom, you just don't have the freedom to relicense other people's code. Not even the BSD style licenses allow you this so-called 'freedom'.

      ... when it comes to library code that [other] folks have ... [I'm] just using it ...

      I added that [other] above to emphasize my point - that it's other people's code that you want to use. You didn't write it, so you can have no expectations that you should be allowed to use it. In this case, these other folks have decided to let you use the code that they have written, but only under their terms. You either have to agree to these terms, rewrite the library so that you can release the code under your own license, or bitch and moan about how unfair it is that you can't just do whatever the fuck you want with other people's hard work (you appear to have chosen the latter).

      Freedom does not mean being able to do whatever the fuck you want to do - that's anarchy, and it doesn't work. Freedom is having a set of universally recognized rights, and the means to enforce those rights on those that seek to trespass against them. Like copyright - it gives you (and only you) the freedom to do whatever you like with your work, and the power to prevent other people from doing whatever they like with your work. In this instance, QuasiEvil, you are the other people.

      Until everyone can be trusted to just 'do the right thing' (whatever the hell that is), freedom will always mean trading some small convenience (like the ability to walk into my neighbours house and take his stuff) for a larger convenience (like not having people walk into my house and taking my stuff). The GPL is no different.

      The truth is that is is possible to circumvent the GPL (i.e. to mix GPL and non-GPL code in the same project) - you just have to ensure that, when you are running the non-GPL code, the CPU's instruction pointer never refers to a block of GPL-covered code. You can achieve this by using networking and/or message passing techniques to pass information from one module to another, without requiring your non-GPL module to be linked with the GPL module. Yes, it's a fuck around, but one again we are simply trading a small convenience for a larger one.

      This post is from someone who releases code under the GPL to everyone in this forum that bashes the GPL at every opportunity (like the first poster). I've made my decision and I'm comfortable with it, so you might as well just shut the fuck up - you're bitching about something that no-one has any intention of changing.

    49. Re:Python? by poopdeville · · Score: 3, Informative

      No, he's completely wrong. A relation is a subset of the Cartesian product of sets. And one can form the Cartesian product of a set with itself. For example, the plane is realized by the product RxR.

      --
      After all, I am strangely colored.
    50. Re:Python? by fyngyrz · · Score: 3, Insightful

      I honestly believe that if you put your code out there for someone to use you should try to get something for it. Your life, the time you spend writing the code, is valuable. Make it worth something.

      It's my code; I chose to make it PD; and I do get something for it, I get to add a shoulder to the wheel, as it were, if anyone will accept my contribution... and I enjoy the idea that the time I spent saves someone else some of theirs, hopefully such that they can create something above and beyond what I already did. Sometimes that's enough. I've gotten lots of help off the net, no strings at all -- so I don't find it at all peculiar to offer something back likewise sans strings.

      Some works we contribute; some things we ask a return for. I'm ok with both approaches, really, it is the ones in the middle (supposedly "free", but with substantial strings) that don't attract me either as a user or a contributor. That's just me. What seems to rile people up is if I talk about the reality of those strings. That's when we get these threadfests.

      --
      I've fallen off your lawn, and I can't get up.
    51. Re:Python? by XNormal · · Score: 3, Insightful

      How is this moderated as "informative" when it contains blatantly incorrect information? SQLite is most definitely present in all Python 2.5 installations. It's part of the Python source tree. It's as much a part of the Python distribution as the regular expressions library you use in your code. And if you insist on using an older version of Python SQLite is just one apt-get away.

      In what specific ways does the supposed "bloat" of SQLite affect the user, exactly?

      What kind of "maintenance" does the user need to do on the SQLite source code? It's maintained well enough for some some pretty big users. Who maintains your code and why should I trust you with my data?

      How can SQLite be "difficult to use" when it's just standard SQL with a standard Python DBAPI interface?

      It's really nice that you wrote a cute little datastore. But there's no need to badmouth what you perceive as the competition.

      --
      Stop worrying about the risks of nuclear power and start worrying about the risks of not using nuclear power.
    52. Re:Python? by bestinshow · · Score: 2, Insightful

      IMO, SQL is not overkill. It can be much more useful and faster than flat files. In addition, there is a strong chance that this small personal project will grow, and then require more tables, and therefore you might as well do it this way from the start to avoid the common issue of extending the wrong solution too far because you don't want to change over to the right solution.

      Otherwise just use CSV and be done with it. I bet anyone here, in their language of choice, could write a fairly fully featured CSV based datastore (create/read/update/delete) tool in a few hours, especially if the application just reads it in at start, manipulates the dataset in memory, then writes it out.
    53. Re:Python? by bigstrat2003 · · Score: 2, Insightful
      It's more specific than even that, otherwise the GPL should have no problems with people using GPL code in BSD-licensed projects. The fact of the matter is, the GPL doesn't really promote freedom like it claims to. That's the problem, that it talks the talk but doesn't walk the walk. If the GPL wasn't touted as promoting freedom so much, I wouldn't have a problem with it. As it is, it's sheer hypocrisy, and I despise it for that.

      Besides, you don't think it's a bit rich to try to restrict "the community" to what you want it to mean, rather than the natural interpretation of the word?

      --
      "16MB (fuck off, MiB fascists)" - The Mighty Buzzard
    54. Re:Python? by Muad'Dave · · Score: 2, Interesting
      A single table relational query:


      select * from roles r1, roles r2, roles r3, roles r4, roles r5, roles r6 where r1.costar=r2.actor and r2.costar=r3.actor and r3.costar=r4.actor and r4.costar=r5.actor and r5.costar=r6.actor and r6.name='Kevin Bacon";

      --
      Tiller's Rule: Never use a word in written form that you've only heard and never read. You will end up looking foolish.
    55. Re:Python? by Junta · · Score: 2, Insightful

      Why is it overkill? Just because it *can* offer advanced features does not mean you must use those. It's just another DB implementation that happens to use SQL syntax as its query format. For basic stuff, SQL is very straightfoward (doesn't get much simpler than "select name from custromers where address like.."). The amount of setup is trivially the same as any other file (open/create a file just like anything else), and the space requirements are negligible.

      In response to the mentions of DB engines that use a human-readable format, my experience with those is that I gain practically nothing because I rarely end up reading the DB directly, but it is horrendously slow for many operations. Not much to gain, a lot to lose. When I do want a plaintext backup or something to read, it's a sqlite dump away. If the databse access are exceedingly rare, a plaintext may be 'enough', but at the end of the day, a solution like SQLite or a bdb setup is much more widely used and tested.

      --
      XML is like violence. If it doesn't solve the problem, use more.
    56. Re:Python? by chriseyre2000 · · Score: 2, Insightful

      The GPL does not have to be the only licence on some code. If you find some GPL code that you want to use without invoking the GPL then cut a deal with the copyright owner of that fragment of code.

      Following the rules of the GPL is the price for using GPL code. If you don't like the price then either renegotiate it with the copyright owner or don't use it. This is no different to the licencing cost of a tiny part of a proprietry component suite.

    57. Re:Python? by Nimey · · Score: 2, Funny

      Stupid git.

      --
      Hail Eris, full of mischief...

      E pluribus sanguinem
  2. No Java? by jawtheshark · · Score: 5, Insightful

    I would have recommended HSQL, but you don't want Java. Frankly, usually, when we're talking databases I won't say "use a spreadsheet", but with 10 fields, you might as well use a spreadsheet. Of course OpenOffice.org Base is out, because it uses HSQL.

    Something like CSQL might fit, but I have no experience with it.

    --
    Ahhh...the great dumpster continuum. Many a free computer will be found there. -- sowth (748135)
    1. Re:No Java? by SanityInAnarchy · · Score: 2, Insightful

      In fact, the requirements are pretty extreme.

      Must not be "online" -- does that rule out web apps? Even if they'll run on your local machine?

      And why no Java? Can't be for efficiency, otherwise you wouldn't be running Vista. Maybe something's broken with your Java?

      Also, what are the required features? You may have outgrown Notepad, but have you outgrown vim, grep, and friends? That's probably why there's not much F/OSS for this kind of thing. Just a guess.

      --
      Don't thank God, thank a doctor!
    2. Re:No Java? by geekboy642 · · Score: 5, Insightful

      Mod parent up.
      This guy wants a spreadsheet, he just doesn't know it. Excel--or the free alternative from OpenOffice.org--will do everything he could possibly want, and although it saves as its own infernal file format, it exports competently into a tab or comma-delimited format.

      All the extra "requirements" are just pseudo-intellectual mumbo-jumbo that have no bearing on reality.

      --
      Just another "DOJ fascist authoritarian totalitarian bootlicker" -- Zeio
  3. Err ... by Anonymous Coward · · Score: 4, Informative

    Comma Separated Variable Text Files, as exported and imported by Excel. You can get libraries to read and write these, and search these in most languages.

    Otherwise what's wrong with a simple database like MySQL or PostgreSQL on your computer?

    1. Re:Err ... by djmurdoch · · Score: 2, Informative

      Comma Separated Variable Text Files, as exported and imported by Excel. Don't use CSV with Excel, it will by default change values on import.

      For example, if you ask it to read and write this:

      May 20,5/20,1.000

      you get this:

      20-May,20-May,1

      That might be okay if those were really two dates and a number, but I was never asked if they were. (OOO Calc is just as bad: it asks, and by default modifies the data).
    2. Re:Err ... by pthisis · · Score: 3, Informative

      We have even worst problems; it'll turn

      Smith,John,703-555-5555

      into
      Smith,John,-5407

      The latter being 703 minus 555 minus 5555.
      when importing a CSV file. No joke. There are ways around it, but the default is pretty braindead.

      --
      rage, rage against the dying of the light
    3. Re:Err ... by rindeee · · Score: 4, Funny

      Such foolishness. Imagine a program which exists for the intent purpose of solving math equations interpreting 703-555-5555 as just such an equation. Next someone's going to say that you shouldn't be using Excel as a database. Crazy talk I tell ya'!

    4. Re:Err ... by DAldredge · · Score: 5, Insightful

      Just tired that on Excel 2007 - it imported correctly. The three fields all imported correctly.

    5. Re:Err ... by 808140 · · Score: 2, Insightful

      As the parent said, there are ways around it (using VBA ... ugh). But Excel is not a program whose purpose is to solve math equations, it is a program whose purpose is to manage spreadsheets. Spreadsheets contain data, and typically not just numeric data.

      I work at an investment firm, and we get CSVs from our vendors with SEDOLs in them. Excel will helpfully (and silently) strip the leading zeros on UK securities, for example. Oops.

    6. Re:Err ... by CheeseTroll · · Score: 3, Informative

      Another way around that is to open Excel first, then do File > Open to open the .csv file. That should force Excel to use the import Wizard, which lets you specify those columns as text, rather than assuming that they're numbers or an equation.

      That's what I do in Excel 2003, anyway, to stop it from stripping the leading zeros in SSNs.

      --
      A post a day keeps productivity at bay.
  4. OOO? by iamhigh · · Score: 5, Informative

    it must be simple, F/OSS, must work in Windows Vista, preferably use a portable format, must not be an online app, and must not require Java. Does such a beast exist Maybe this will do? I think it meets all your needs. You can even use it with a web app if desired. Some functionality may need Java, but most doesn't. I don't know what parts of OOO are Java-driven, but I am sure somebody here does!
    --
    No comprende? Let me type that a little slower for you...
    1. Re:OOO? by ADRA · · Score: 4, Insightful

      OpenOffice uses Java for its database tool. I'm fine with it, and its probably the best choice for anyone actually wanting something simple / usefull / free, but obviously the OP is a trolling wanker, so it has to be san-Java.

      --
      Bye!
  5. sqlite by nguy · · Score: 5, Informative

    Sqlite is used in many apps (including Firefox), it's small, and it's efficient. It also has bindings to just about every imaginable language.

    I find it amazing that you didn't come across it in Googling...

    1. Re:SQLite by Quartz25 · · Score: 3, Informative

      Python 2.5 comes with SQLite3, so you don't even have to install it separately.

      --
      Most people don't get why the integral of "e to the x" is so funny. Most math majors don't have a sense of humor.
    2. Re:SQLite by edalytical · · Score: 2, Informative

      Yeah, you can't really get more permissive than public domain.

      --
      Win a signed Stephen Carpenter ESP Guitar from the Deftones: http://def-tag.com/?r=0008781
    3. Re:sqlite by MBGMorden · · Score: 3, Insightful

      Was going to suggest this myself but looks like you and many others beat me to it. Yes SQLite is "SQL", but I can't think of an actual program where I'd consider it's use overkill. It's made precisely for small little projects that don't want or need to use something like MySQL or PostgreSQL.

      --
      "People who think they know everything are very annoying to those of us who do."-Mark Twain
    4. Re:sqlite by kingbyu · · Score: 5, Informative

      There is an add-on to Firefox called SQLite Manager that makes managing your own little database quite a bit easier than typing sql commands on a command line:
      https://addons.mozilla.org/en-US/firefox/addon/5817

    5. Re:sqlite by ignavus · · Score: 2, Funny

      "It also has bindings to just about every imaginable language."

      What? Bindings to Klingon (you didn't say "programming language")? Fortran I? Dartmouth Basic? z80 Assembler? SGML? Postcript? VBA?

      Shall I go on?

      --
      I am anarch of all I survey.
  6. SQLite by kcbanner · · Score: 4, Informative

    Get it http://www.sqlite.org/ here.
    There are GUI clients that work fine for this sort of thing, SQL is simple for doing basic things. One file, one database.

    --
    Obligatory blog plug: http://www.caseybanner.ca/
  7. SQLite by elhedran · · Score: 2, Informative

    Have you looked at SQLite?

    C based, no client-server. Very small, quite fast. And a very permissive license.

  8. how about... by ramirez · · Score: 4, Insightful

    a comma delimited file?

    Umm... just write a few one-liner perl scripts to get info out.

  9. Ta da by Anonymous Coward · · Score: 2, Funny

    findstr, the windows equivalent of grep.

  10. sqlite of course by cats-paw · · Score: 2, Informative

    I think this would be perfect, I found it when I was looking for a DB which met similar criteria. I don't care about windows, but it does work under windows AFAIK.

      http://www.sqlite.org/

    Use it all the time for everthing from trivial databases to several 10s of megabytes. Since query's can be entered on the command line it's quite simple to write an ascii results grabber.

    --
    Absolute statements are never true
  11. heh by B3ryllium · · Score: 4, Funny

    Since the majority of the comments so far have pointed at SQLite, I'm kind of surprised that the post didn't come "from the sqlite dept." :)

  12. Perl DBFile by Anonymous Coward · · Score: 3, Interesting

    Use perl with a tied hash like BerkeleyDB http://search.cpan.org/~pmqs/BerkeleyDB-0.34/

    Easy, fast, simple.

  13. Flat file is useless by bluefoxlucid · · Score: 5, Insightful

    Trying to solve such an issue as a flat file is a poor design characteristic. This says "I don't want to learn SQL" or "I want the output human readable." If you just want to store information for programmatic use, use SQLite and quit worrying about data storage format. If you want it human readable, grab libxml2 (works on Windows too) and store it as XML. Decide which problem you are solving because if you don't need (i.e. it's not helpful) it human-readable and/or want the ability to search it quickly without loading the whole thing into memory, then SQLite is probably a better solution.

    1. Re:Flat file is useless by blippo · · Score: 4, Insightful


      Well... XML is human readable in the same way as a sand is edible.

      If the OP wants to use a tool better than notepad for editing, he probably should try Open Office.

    2. Re:Flat file is useless by bluefoxlucid · · Score: 2, Funny


        <ssid>MyNet</ssid>
        <encryption>
          <type>WEP</type>
          <key_size>128</key_size>
          <key>0xAAAAAAAAAAAAAAAA</key>
        </encryption>
        <channel>11</channel>
      </entry>

      Very human readable.

    3. Re:Flat file is useless by killmenow · · Score: 2, Funny

      Very human readable. For varying definitions of "very", "human" and "readable".
  14. Re:OOO? Calc and Base by edisrafeht · · Score: 2, Informative

    In addition to Calc, there is also Base, the alternative to MS Access. Check it out here: http://www.openoffice.org/product/base.html It's gotta be way easier to work in OpenOffice than a whole database system (making up accounts, tables, reports, and all).

  15. Spreadsheet by benwb · · Score: 3, Informative

    Open office should do the trick.

  16. SQLIte or BDB by willyhill · · Score: 3, Informative
    I'd recommend SQLite or Berkley DB. I've used BDB on a couple of projects where I needed to basically store an enormous hashtable that could be read quickly by key, and I don't think anything else comes close to the speed of that thing.

    BDB is *not* a relational database though, it's just a storage/indexing engine, which is used most notably by MySQL as a backend. SQLite on the other hand is a full file-based RDBMS with a small runtime, so it might be a bit of overkill for you in this particular scenario.

    But both of them run on Windows, Linux and the BSDs, so you won't have portability problems. And most languages have bindings for them.

    --
    The twitter monologues. Click on my homepage and be amazed.
  17. Uhh by Auckerman · · Score: 2, Interesting

    The only thing that comes to mind is Mac only. Bento (which from the write up is exactly what you want). I really think the only thing on Windows that really comes close is Microsoft Access and even that isn't what you're looking for.

    If you are just doing tabulated data in a piece meal form, Excel with an Access back-end will do the trick, I'd be willing to be you're going to be able to find templates that help you start. You could also use File-maker (which is overkill, but easy to use) and go to the user community for starting templates.

    --

    Burn Hollywood Burn
  18. A CSV File? by shades66 · · Score: 2, Interesting

    Can be used by all spreadsheet programs (Excel,Gnumeric,OOCalc probably even Google's online offerings) for complete portability

    Depends what you want to be able to do with your data? If it's just quick searches to find local wifi points then it seems overkill to use a multi-platform/FOSS database

    --
    ---- There are 10 types of people in the world. Those that understand binary and those that don't
  19. GDBM by jschmerge · · Score: 4, Informative
    If you're doing simple Key,Record storing, try GDBM (or one of its analogs: DBM, NDBM). IIRC, it's included as part of glibc. The interface for it is analogous to that of a hash table... In fact there's even native Perl support for tying hash tables to GDBM.

    If that doesn't satisfy your need, take a look at Berkley DB. It offers a more sophisticated interface than DBM.

  20. What about XML? by SpinyNorman · · Score: 3, Interesting

    A database seems overkill.

    Read the XML records into an STL container for easy access.

  21. How about a spreadsheet? by diamondsw · · Score: 2, Informative

    For a small number of fields like that, why re-invent the wheel? Grab OpenOffice and just create a spreadsheet. Easily searchable, sortable, extendable, and all with zero maintenance on your part.

    I recently moved my collection of serial numbers out of a defunct proprietary program and into a spreadsheet - couldn't be happier.

    --
    I don't know what kind of crack I was on, but I suspect it was decaf.
  22. Re:OOO? Calc and Base by KenSeymour · · Score: 2, Informative

    Have you used OO Base?

    I was using it about a year ago and I found it buggy and hard to use. I was using it to access
    PostgreSQL.

    I like the other parts of OpenOffice that I use, Write, Calc, Draw.
    Of course, I have not had time to look at it since then.

    --
    "We can't solve problems by using the same kind of thinking we used when we created them." -- Albert Einstein
  23. Re:Python comes with SQLite by spookymonster · · Score: 4, Informative

    Just get Python, and use the version of SQLite that comes with it:

    import sqlite3
    mydb = sqlite3.connect('sample.db')
    mydb.execute("create table contacts (fname text, lname text, email text)")

    mydb.execute("insert into contacts values('Spooky','Monster','spook@spammity.spam')")

    mydb.commit()
    mydb.close()


    You can then use the free and open SQLite database browser to browse, edit, and print your table.

    You may think you're keeping it simple by using a flat file, but you're really not. It may be somewhat easier to manually edit, but it's also easier to screw up, and I've never heard of one with the ability to undo changes.

    --
    - Despite popular opinion, I am not perfect.
  24. Try Metakit by kawabago · · Score: 4, Informative

    Metakit is a small footprint database that might fit your needs. Metakit

    1. Re:Try Metakit by slackergod · · Score: 2, Informative

      Much as I like sqllite, I agree with you completely... metakit is definitely what he wants.

      For those not familiar with metakit,
      it straddles a very interesting (to me at least)
      line between "some csv files i threw together" and "full on sql db" in terms of it's storage
      and query semantics, while at the same time being
      a flat file like sqllite.

      And it really deserves to be better known from a
      theoretical standpoint, in how it structures the
      data... especially some of the more interesting
      applications it's been put to, such as a
      graph-theory style database written as a layer on
      top of metakit (can't remember the name).

      Also, it's bound to a number of languages (python
      and tcl are the only ones i've played with).

      Perhaps if there weren't SO MANY responses saying
      "sqllite" over and over, your response would have
      gotten the informative rating it needs.

  25. sed, awk, and grep... by mikelieman · · Score: 3, Informative

    echo "badger, badger, badger, badger, snake" >> my_file

    --
    Technology -- No Place For Wimps! Grateful Dead and Jerry Garcia Chatroom -- http://www.wemissjerry.org
  26. For your reference only by holophrastic · · Score: 4, Insightful

    If it's just for your reference, you don't need a database at all. Databases don't become technically worth-while until you get to indexing. And until you have fifty-thousand records, or complex queries, you don't need indexing.

    So why not simply write out a tab-delimited file? Retrieval is as simple as reading every line, splitting by the delimeter, and regexp'ing whichever field you're examining. 15'000 records takes about two seconds on a modern machine. Of course, for anything more complicated, that same file gets easily imported into your favourite spreadsheet application.

    You don't need to worry about locking because you're the only one using it. And otherwise, your application simply locks the file handle, or creates & destroys a traditional lock-file.

    It's a thirty-line perl script (of legible perl). You can do it in JScript as a local HTA if you want the benefit of html etc. interfaces.

  27. Consider an xml-based db by Doofus · · Score: 2, Informative

    There are a number of XML databases, several free and open source, that will rely only on "flat-files". You could probably get by with Microsoft's xml libraries, though there are a number of ways to manipulate and query a set of xml documents. Several of these XML databases implement XQuery which may help if your dataset grows beyond effective queries by visual inspection in Notepad.

    eXist is one alternative; while I haven't personally used it the home page indicates it's a fairly capable project.

    Sedna also appears to be feature-rich.

    There was a similar discussion on Slashdot specifically with reference to XML databases, here.

    Happy hunting -

    --
    If the Government becomes a lawbreaker, it breeds contempt for law; ... it invites anarchy. - Brandeis
  28. Re:Wikis on a Stick by afabbro · · Score: 2, Interesting

    Even better, look at Tiddly Wiki. No engine required - the entire wiki is run in javascript. Just one .html file to carry around with you.

    --
    Advice: on VPS providers
  29. Re:VIM seems to fit the description by Aelyew · · Score: 2, Insightful

    As the original poster had been utilizing Notepad previously, vi/vim should both be considered significant upgrades.

    It would help if the OP had posted the current number of records and projected growth. Size of the database and how it will be utilized goes a long way to determining a 'best' solution.

  30. Re:Python comes with SQLite by fyngyrz · · Score: 4, Interesting

    You may think you're keeping it simple by using a flat file, but you're really not. It may be somewhat easier to manually edit, but it's also easier to screw up, and I've never heard of one with the ability to undo changes.

    Class dbtxt includes the ability to undo changes, and features human-readbility for the flat database files. It's trivial and not error-prone at all to mod a database file to delete, or undelete a record, and of course you can do it through the database engine as well.

    --
    I've fallen off your lawn, and I can't get up.
  31. How about a full Oracle Database 11g Enterprise by myspace-cn · · Score: 4, Funny

    Why mess about with filty batchfiles, bashscripts and clunky sqlite, mysql. How about a full Oracle Database 11g Enterprise? o;)

  32. PCFile by Linker3000 · · Score: 2, Informative

    1993 called to recommend PCFILE!

    http://www.umich.edu/~archive/msdos/database/pcfile/

    Mind you, you'll have to toss Jim Button $10 as it's shareware!

    --
    AT&ROFLMAO
  33. Sounds like he wants an APPLICATION not a framewrk by wernst · · Score: 3, Insightful

    I'm guessing he wants a FOSS version of FileMaker Pro; something that is an application with a GUI. All you guys are suggesting various frameworks he can use to program his own. No, I don't have an answer either, other than to suggest the spreadsheet in OpenOffice.

  34. Re:Python comes with SQLite by dkf · · Score: 4, Interesting

    mydb.execute("insert into contacts values('Spooky','Monster','spook@spammity.spam')") Couldn't you have at least done an example that doesn't promote bad practices with quoting? My experience with sqlite (admittedly using the Tcl binding) is that it gets this stuff far more correct and easy to use in practice than any other database API that I've seen. I don't know if the python bindings are of that same quality; if they are, they're top notch. The code I would have written? Like this:

    set first "Spooky"
    set last "Monster"
    set email "spook@spammity.spam"
    # In practice it's really easy to put values into variables
    mydb eval {insert into contacts values (:first,:last,:email)}


    The advantage? That code is now totally armour-plated against SQL injection attacks as well as being fast. Which is nice, really really nice.
    --
    "Little does he know, but there is no 'I' in 'Idiot'!"
  35. It is still a database system but.. by SixDimensionalArray · · Score: 2, Informative

    Nobody has yet mentioned that MySQL has a CSV storage engine - just create a table with type CSV and away you go. It does require the MySQL engine though.

    Otherwise, I agree with most posters who say just use a simple text and/or xml file if the data volume is relatively small. That should be more than enough!

    SixD

  36. Requirements by jd · · Score: 2, Informative

    The poster didn't want SQL, so I'm guessing they ruled out SQLite on those grounds. QDBM and Oracle/Sleepycat/Berkley DB-4 would be the smallest, fastest "pure" flat-file databases that are also cross-platform - at least, that I know of.

    --
    It's a small world and it smells funny; I'd buy another if it wasn't for the money; Take back what I paid (SoM)
  37. Kexi by erikdalen · · Score: 2, Interesting

    Kexi should be able to hande that pretty easily, and can even create a nice form for the data entry:
    http://www.kexi-project.org/

    --
    Erik Dalén
  38. Re:OOO? Calc and Base by pbhj · · Score: 2, Informative

    I'm still using it for a customer database, it's two main problems are it's buggy and hard to use, and slow.

    So really it's 3 main problems are being buggy, hard to use, slow* and totally bloated ...

    Actually it's not half as buggy as it was a few releases back - I can actually use it now to fill in a form without it crashing. Just tried opening a windows XP made odb file in Ubuntu (OOo 2.4) and it's slow as hell and bugged to death, so you might add portability to that list of main problems.

    [Yes I've filed bug reports].

    ---
    * slow for searching, takes about 2 mins to do a straight text search on 500 records.

  39. Why are we trying to promote python? by tknd · · Score: 5, Informative

    He doesn't need python. He just needs a database. He can download a precompiled binary for windows that allows one to work with the database at the command line. Python is not necessary.

    And if the command line is too much, as others have noted there is already a convenient firefox extension for graphically interacting with a sqlite database.

  40. You really do NOT want a DBMS, use a spread sheet. by ChrisA90278 · · Score: 4, Interesting

    Your problem is that you are looking for a "database". This is a very complex kind of program that is total overkill for your purpose. Will you really be storing hundreds of thousands of records and wanting to do some complex querries? Ifnot why not just use a speadsheet? If you want a free spreadsheet look at OpenOffice.

  41. use a spreadsheet by crevistontj · · Score: 3, Insightful

    Why one earth would you use a database to store one table on information? Save youself some trouble and use a spreadsheet.

  42. Re:Python comes with SQLite (What about cPickle?) by adonisv1 · · Score: 2, Informative

    Why not the pickle/cPickle module? Not a flat-file but easier to manipulate since your just serializing native Python objects.

    e.g.

    import cPickle
    class Record:
    def __init__(self, fname, lname, email):
    self.fname = fname
    self.lname = lname
    self.email = email
    # ---
    # Write out the data
    records = list()
    records.append(Record("John", "Doe", "jd@email.com"))
    output = open("records.db", "wb")
    cPickle.dump(records, output)
    output.close()
    # ---
    # Read back the data
    inputFile = open("records.db", "rb")
    data = cPickle.load(inputFile)
    for record in data:
    print record.fname, record.lname, record.email
    inputFile.close()

  43. Berkeley? by mindstrm · · Score: 3, Informative

    Berkely DB?

  44. Firebird? by LiENUS · · Score: 2, Insightful

    Firebird (http://www.firebirdsql.org/) works with many programming languages so it is not tied to java, works fine with windows vista and operates without an installed server in its "embedded server" mode.

  45. Re:Python comes with SQLite by Anonymous Coward · · Score: 2, Insightful

    ...because he wants to hack his own system...

  46. Re:Python comes with SQLite by Just+Some+Guy · · Score: 2, Informative

    I don't know if the python bindings are of that same quality; if they are, they're top notch.

    The sqlite3 module as shipped with Leopard says that it supports question mark substitution, so his example would be better written like:

    mydb.execute("insert into contacts values(?, ?, ?)", ('Spooky', 'Monster', 'spook@spammity.spam'))

    BTW, the same could be written for PostgreSQL like:

    mydb.execute("insert into contacts values(%(first)s, %(last)s, %(email)s)", {'first': 'Spooky', 'last': 'Monster', 'email': 'spook@spammity.spam'})

    Hopefully sqlite3 will get the same standard substitution in the future, but at least it is possible to do it safely today.

    --
    Dewey, what part of this looks like authorities should be involved?
  47. Spectate Swamp Desktop Search by SpectateSwamp · · Score: 3, Informative

    Been searching flat files with this open source VB5 program since 1999. Searches flat files at 20,000,000 cps displaying hi-lited hits in matching lines only or full context mode. Results can be exported to a results file. Append txt files together. Search and replace option. Run multiple versions with various default settings. I have been yapping and yapping about flat files, only to get great amounts of resistance from the Geeks. The search uses lots of defaults and quick keys (for typists). From startup to shutdown nothing is faster. Channel9 and thedailyWTF.com have the best threads. Check it out. It's the only program you'll ever need

    --
    Challenge: I have better access to my Video, Music, Pics and Text than anyone on Earth.
    1. Re:Spectate Swamp Desktop Search by WWWWolf · · Score: 2, Funny

      Indeed! Our tests have shown that SSDS is very capable indeed, for various definitions of "capable", "very" and "indeed". SSDS excels in Obtuse Search Syntax, Not Parsing the Content, and Extending the Joke Way Beyond Snapping Point. But we all love it anyway over at thedailywtf!

  48. Re:Python comes with SQLite by spookymonster · · Score: 3, Insightful

    1) My example was done to show how quick and easy it would be to set up and populate a table in Python.

    2) He's explicitly mentioned several times that this is for his own private non-web use.

    3) Your fly is open.

    --
    - Despite popular opinion, I am not perfect.
  49. Re:Python comes with SQLite by ubernostrum · · Score: 2, Informative

    Actually, the Python SQLite adapter supports the standard Python DB API (PEP 249), and so you can just follow its recommendations (which includes using placeholders).

  50. Re:Python comes with SQLite by Fmuctohekerr · · Score: 2, Insightful
    Explain to me how you can 'inject' anything into a string literal. Nowhere in the post does he build a SQL statement from user input. Methinks you are just a little too ready to bust someone.

    I know that feeling.

    :)

  51. Would TextDB or BerkeleyDB serve ur purpose? by srijyothsnaYG · · Score: 2, Interesting

    TextDB: If you don't have access to a database but you do have access to PHP, and you want your web data stored in a database, then this is what you're looking for! Full sql compatibility is planned as well as a perl port. This is OS-independent and is licensed under GNU GPL, has a web-based interface and is developed using PHP. (check out: http://sourceforge.net/projects/textdb). Berkeley DB (BDB): This is a computer software library that provides a high-performance embedded database, with bindings in C, C++, Java, Perl, Python, Ruby, Tcl, Smalltalk, and many other programming languages. Berkeley DB is redistributed under the Sleepycat Public License, an OSI and FSF approved license and runs on a variety of operating systems including most Unix-like and Windows systems, and real-time operating systems. It comes in three different editions: Berkeley DB(originally written in C), Berkeley DB Java Edition, Berkeley XML DB (check out: http://en.wikipedia.org/wiki/Berkeley_DB)

  52. Metakit by hkuiper · · Score: 2, Informative

    Take a look at Metakit. http://www.equi4.com/metakit/index.html. Its single file, small, fast and it has proven itself over many years. It is written in C++ and bindings for Python and Tcl are available. Instead of tables, rows and fields it uses similar concepts called view, index and property. Interestingly, a property may also be a subview thus allowing a mix of a relational database (flexible) and a hierarchical database (fast).

  53. Re:Python comes with SQLite by Rogerborg · · Score: 2, Insightful

    Do you always ignore requirements when designing a solution, or are you making a special exception in this case?

    --
    If you were blocking sigs, you wouldn't have to read this.
  54. Why should he shut up? by Bozdune · · Score: 2, Insightful

    Yes, one can create work-arounds with GPL'd library code, like compiling the library separately and building a socket or messaging interface to it (which interface of course has to be GPL'd as well), but this can be a PITA as you point out. And, as I'm sure you'd agree, workarounds like that are not always possible for performance and other reasons.

    Yes, authors who use the GPL have decided that we can use their code in a certain way, and that's their privilege. However, it can be a dumb choice, because as the grandparent poster points out, those of us who do rely on proprietary licensing models for our revenue (and that would be the majority of us) are often unable to give anything back to the community as a result. I'd love to be able to use some GPL'd libraries in our stuff, and I'd love to be able to piss in those libraries to contribute bug fixes and help out in general. But the GPL forces me in another direction, usually to reinvent the wheel or to use something that's closed source and potentially less capable.

    If you author a library, think hard about the licensing model. The GPL may not be the best choice -- unless, of course, you have a religious belief that all software should be GPL, which is your decision to make. I don't get into religious arguments, so that would be the end of the discussion.

  55. Open source java databases by youngdev · · Score: 2, Informative

    I use hsql. It has many options: flat file, memory just to name 2.

    I have also heard good things about H2 and apache derby. These have been especially valuable for embedded apps

  56. Not Free but Cheap by dbcad7 · · Score: 2, Interesting
    Check out Notetab Pro.. should have no problem dealing with your text files.. and you can get fancy and make imput dialog boxes, and little clips (macros) to deal with repetitive inputs... Deals well with text, if I remember right the clip engine was modeled after Perl.

    I like notetab a lot, wish he'd port it over to Linux...

    --
    waiting for ad.doubleclick.net