Pythonic wrappers for SQL?

Discussion in 'Python' started by Kenneth McDonald, Jan 14, 2006.

  1. I need to do some data manipulation, and SQLite is a nice little
    product for it, except of course that I'd need to write SQL. Are
    there any good libraries out there that let one write (basic) queries
    in a Pythonic syntax, rather than directly in SQL?

    Kenneth McDonald, Jan 14, 2006
    1. Advertisements

  2. You need an ORM

    Try SQLAlchemy -

    Have fun
    Lawrence Oluyede, Jan 14, 2006
    1. Advertisements

  3. Kenneth McDonald

    EleSSaR^ Guest

    Kenneth McDonald si è profuso/a a scrivere su comp.lang.python tutte queste
    You need an ORM. Beyond SQLAlchemy (I don't have experience with it) i
    would suggest you try out SQLObject and PyDO.

    Just a clue: although they prevent you from writing SQL, you'll have to
    learn SQL basics anyway, or you won't understand the docs.

    If you simply want to forget SQL, you can try out Axiom:

    It's a native object database; it uses sqlite as backend, but that's
    totally transparent to the user, you'll never be asked to enter a single
    sql statement.
    EleSSaR^, Jan 14, 2006
  4. Just to chime in with Steve Holden on taking the why-not-learn-SQL
    route. Chris Fehily's new book, SQL, A Visual QuickStart Guide (2nd Ed)
    is a masterpiece and goes well on the bookshelf with his equally lucid
    Python QuickStart Guide.

    Cheap, too, for what you get.

    BartlebyScrivener, Jan 15, 2006
  5. Or - as a word play in this case - try my module ForgetSQL [1]

    (Also available in a new and backwards-incompatible beta version [2]
    which should be easier to get started with, has more extensive unit
    tests, but has only been tested with MySQL and SQLite)


    Example code from [2]

    import MySQLdb, forgetsql2
    # Connect to MySQLdb using keyword parameters
    db = forgetsql2.generate(MySQLdb, {db='fish'})

    # Iterate through generated class from the table "postal"
    for postal in db.Postal:
    # Print normal fields
    print postal.postal_no, postal.postal_name, postal.municipal_id
    # Follow the foreign key municipal_id to retrieve the entry
    # from the Municipal class
    municipal = postal.get_municipal()
    print municipal.municipal_name

    # Retrieve by primary key
    rogaland = db.County(county_id=11)
    # Iterate over municipals that have foreign keys to rogaland
    for municipal in rogaland.get_municipals():
    print municipal.municipal_name

    # Load by primary key, change, and save
    postal = db.Postal(postal_id=4042)
    postal.postal_name = "Fish land"
    Stian Soiland, Jan 16, 2006
    1. Advertisements

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments (here). After that, you can post your question and our members will help you out.