Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/linsomniac/python-psycopgwrap
A helper wrapper for psycopg to make database coding easier in Python.
https://github.com/linsomniac/python-psycopgwrap
Last synced: 11 days ago
JSON representation
A helper wrapper for psycopg to make database coding easier in Python.
- Host: GitHub
- URL: https://github.com/linsomniac/python-psycopgwrap
- Owner: linsomniac
- Created: 2010-11-13T00:35:33.000Z (about 14 years ago)
- Default Branch: master
- Last Pushed: 2011-01-20T21:37:15.000Z (almost 14 years ago)
- Last Synced: 2023-07-26T19:22:19.403Z (over 1 year ago)
- Language: Python
- Homepage:
- Size: 102 KB
- Stars: 4
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README
Awesome Lists containing this project
README
python-psycopgwrap
Written by Sean Reifschneider
Placed in the public domain.
No rights reserved.Please submit bugs/fixes at:
http://github.com/linsomniac/python-psycopgwrapA wrapper around psycopg2 to make common things easier. It really doesn't
follow the DB-API. It's mostly for me to experiment with other ways of
talking to the database than the standard DB-API. I've used this in a
number of projects. It's primary focus is convenience.Here are a few of the features:
Query results can be accessed as a dictionary of columns (row['id']).
Query results can be accessed as attributes (row.id).
Query results can be accessed as lists (row[0]).
Queries return indexable iterators, so you can do things like "for
row in query", and "query(cmd)[0]". Note that indexes can only be
larger than or equal to the last index.Query arguments are passed as discrete arguments, not as a tuple.
Passing as a tuple always makes me want to do a "%" and if I accidentally
do that it can open up a SQL injection.There's an "insert" helper that takes a table name and keyword arguments.
Similarly there's a "dictinsert" helper that takes a dictionary of
row:values.Examples:
from psycopgwrap import Database as db
db.connect('dbname=testdb')
user = db.query('SELECT * FROM users WHERE name = %s', name)
if user == None:
print 'No such user "%s"' % name
print 'User id: %s' % user.id # or user.id_
for row in db.query('SELECT * FROM status WHERE id = %s', 500):
print 'id:', row.['id']Other examples:
db.insert('users', name = 'Al Bert')
db.insert('users', { name : 'Al Bert' })user_count = db.queryone('SELECT COUNT(*) FROM users')[0] # 0-th column
if db.queryone("SELECT * FROM users WHERE name = 'Al Bert'"):
print 'Al is in the house'
else: print 'No such user'try: db.commit()
except: db.rollback()