Research
Security News
Malicious npm Package Targets Solana Developers and Hijacks Funds
A malicious npm package targets Solana developers, rerouting funds in 2% of transactions to a hardcoded address.
CouchDB3 is a wrapper around the CouchDB API. For more detailed information, please refer to the documentation.
Big parts of the documentation (and thus docstrings) have been copied from CouchDB's API's great official documentation.
>= 3.7
3.x
Installing via PyPi
pip install couchdb3
Installing via Github
python -m pip install git+https://github.com/n-Vlahovic/couchdb3.git
Installing from source
git clone https://github.com/n-Vlahovic/couchdb3
python -m pip install -e couchdb3
import couchdb3
client = couchdb3.Server(
"http://user:password@127.0.0.1:5984"
)
# Checking if the server is up
print(client.up())
# True
user and password can also be passed into the Server constructor as keyword parameters, e.g.
client = couchdb3.Server(
"127.0.0.1:5984", # Scheme omitted - will assume http protocol
user="user",
password="password"
)
Both approaches are equivalent, i.e. in both cases the instance's scheme,host,port,user,password
will be identical.
Further, clients can be used with context managers:
with couchdb3.Server("http://user:password@127.0.0.1:5984") as client:
# Do stuff
...
dbname = "mydb"
db = client.get(dbname) if dbname in client else client.create(dbname)
print(db)
# Database: mydb
mydoc = {
"_id": "mydoc-id",
"name": "Hello",
"type": "World"
}
print(db.save(mydoc))
# ('mydoc-id', True, '1-24fa3b3fd2691da9649dd6abe3cafc7e')
Note: Database.save
requires the document to have an id (i.e. a key _id
),
Database.create
does not.
To update an existing document, retrieving the revision is paramount.
In the example below, dbdoc
contains the key _rev
and the builtin dict.update
function is used to update the
document before saving it.
mydoc = {
"_id": "mydoc-id",
"name": "Hello World",
"type": "Hello World"
}
dbdoc = db.get(mydoc["_id"])
dbdoc.update(mydoc)
print(db.save(dbdoc))
# ('mydoc-id', True, '2-374aa8f0236b9120242ca64935e2e8f1')
Alternatively, one can use Database.rev
to fetch the latest revision and overwrite the document
mydoc = {
"_id": "mydoc-id",
"_rev": db.rev("mydoc-id"),
"name": "Hello World",
"type": "Hello World"
}
print(db.save(mydoc))
# ('mydoc-id', True, '3-d56b14b7ffb87960b51d03269990a30d')
To delete a document, the docid
and rev
are needed
docid = "mydoc-id"
print(db.delete(docid=docid, rev=db.rev(docid))) # Fetch the revision on the go
# True
For a partitioned database, the couchdb3.database.Partition
class offers a wrapper around partitions (acting similarly
to collections in Mongo).
from couchdb3 import Server, Database, Partition
client: Server = Server(...)
db: Database = client["some-db"]
partition: Partition = db.get_partition("partition_id")
Partition instances append the partition's ID the document IDs (partition-id:doc-id
) for a simpler user interaction,
e.g.
doc_id = "test-id"
print(doc_id in partition) # no need to append the partition's ID
rev = partition.rev(doc_id)
partition.save({
"_id": doc_id, # no need to append the partition's ID
"_rev": rev,
...
})
The partition ID will only be appended provided document IDs do not start with partition-id
, e.g. the following will
work and be equivalent to the previous example
doc_id = "partition_id:test-id"
print(doc_id in partition)
rev = partition.rev(doc_id)
partition.save({
"_id": doc_id,
"_rev": rev,
...
})
FAQs
A wrapper around the CouchDB API.
We found that CouchDB3 demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
Security News
A malicious npm package targets Solana developers, rerouting funds in 2% of transactions to a hardcoded address.
Security News
Research
Socket researchers have discovered malicious npm packages targeting crypto developers, stealing credentials and wallet data using spyware delivered through typosquats of popular cryptographic libraries.
Security News
Socket's package search now displays weekly downloads for npm packages, helping developers quickly assess popularity and make more informed decisions.