Skip to main content

OrientDB native client library

Project description

# pyorient

[Orientdb](http://www.orientechnologies.com/) driver for python that uses the binary protocol.

Pyorient works with orientdb version 1.7 and later.


### Installation

pip install pyorient


## Testing

To run the tests you need `nose`

pip install nose

then you can run tests with:

nosetests


## Usage

A full range of commands will be available soon, for now you have to read the tests.

### Init the client

client = pyorient.OrientDB("localhost", 2424)
session_id = client.connect( "admin", "admin" )

### Create a DB
client.db_create( db_name, pyorient.DB_TYPE_GRAPH, pyorient.STORAGE_TYPE_MEMORY )

### Check if a DB exists
client.db_exists( db_name, pyorient.STORAGE_TYPE_MEMORY )

### Open a DB
client.db_open( db_name, "admin", "admin" )

### Get the size of a database ( needs a DB opened )
client.db_size()

### Get the number of records in a database in the OrientDB Server instance
client.db_count_records()

### Send a command
cluster_id = client.command( "create class my_class extends V" )
client.command(
"insert into my_class ( 'accommodation', 'work', 'holiday' ) values( 'B&B', 'garage', 'mountain' )"
)

### Create a record
rec = { '@my_class': { 'accommodation': 'house', 'work': 'office', 'holiday': 'sea' } }
rec_position = client.record_create( cluster_id, rec )

### Load a record
client.record_load( rec_position.rid )

### Load a record with cache
def _my_callback(for_every_record):
print for_every_record

client.record_load( rec_position.rid, "*:-1", _my_callback )

### Make a query
result = client.query("select from my_class", 10, '*:0')

### Make an Async query
def _my_callback(for_every_record):
print for_every_record

result = client.query_async("select from my_class", 10, '*:0', _my_callback)

### Delete a record
client.record_delete( cluster_id, rec_position.rid )

### Drop a DB
client.db_drop( db_name )

### Create a new cluster
new_cluster_id = client.data_cluster_add(
'my_cluster_1234567', pyorient.CLUSTER_TYPE_PHYSICAL
)

### Reload DB ( refresh clusters info )
client.db_reload()

### Get the range of record ids for a cluster
client.data_cluster_data_range( new_cluster_id )

### Get the number of records in one or more clusters
client.data_cluster_count( [ 1, 2, 3, 4, 11 ] )

### Drop a data cluster
client.data_cluster_drop( new_cluster_id )

### Shut down the server. Requires "shutdown" permission to be set in orientdb-server-config.xml file
client.shutdown( "root", "a_super_secret_password" )

### Transactions

# use a cluster
cluster_id = 3

# execute real create to get some info
rec = { 'accommodation': 'mountain hut', 'work': 'not!', 'holiday': 'lake' }
rec_position = client.record_create( cluster_id, rec )

tx = client.tx_commit()
tx.begin()

# create a new record
rec1 = { 'accommodation': 'home', 'work': 'some work', 'holiday': 'surf' }
rec_position1 = client.record_create( -1, rec1 )

# prepare for an update
rec2 = { 'accommodation': 'hotel', 'work': 'office', 'holiday': 'mountain' }
update_record = client.record_update( cluster_id, rec_position.rid, rec2,
rec_position.version )

tx.attach( rec_position1 )
tx.attach( rec_position1 )
tx.attach( update_record )
res = tx.commit()

assert res["#3:1"].holiday == 'mountain'
assert res["#3:2"].holiday == 'surf'
assert res["#3:3"].holiday == 'surf'

## Contributions

- Fork the project.
- Make your changes.
- Add tests for it. This is important so I don’t break it in a future version unintentionally.
- Send me a pull request.
- ???
- PROFIT

## Authors
- [mogui](https://github.com/mogui/)
- [ostico](https://github.com/ostico/)

## Copyright

Copyright © 2014 Niko Usai, Domenico Lupinetti. See LICENSE for details.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pyorient-1.0.0.tar.gz (46.9 kB view hashes)

Uploaded Source

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page