Storm Manual
This is the detailed documentation for Storm. For a more hands-on approach, check out the [:Tutorial: Tutorial].
Databases
The create_database() function
The create_database() function has the following prototype:
database = create_database(uri)
The uri parameter may be either a URI string or a URI object. The following URIs are examples of acceptable syntax:
backend:database_name
backend://hostname/database_name
backend://hostname:port/database_name
backend://username:password@hostname/database_name
backend://hostname/database_name?option=value
backend://username@/database_name
MySQL
PostgreSQL
SQLite
The Store interface
The ResultSet interface
Properties
Table of properties vs. python vs. database types
Property |
Python |
PostgreSQL |
MySQL |
SQLite |
Bool |
bool |
BOOL |
TINYINT(1) |
anything(*) |
Int |
int, long |
SERIAL, BIGSERIAL, SMALLINT, INT, BIGINT |
TINYINT, SMALLINT, MEDIUMINT, INT, BIGINT |
anything(*) |
Float |
float |
FLOAT, REAL, DOUBLE PRECISION |
FLOAT, REAL, DOUBLE PRECISION |
anything(*) |
Unicode |
unicode |
TEXT, VARCHAR, CHAR |
TEXT, VARCHAR, CHAR |
anything(*) |
Chars |
str |
BYTEA |
BLOB, BINARY, VARBINARY |
anything(*) |
Pickle |
any |
BYTEA |
BLOB, BINARY, VARBINARY |
anything(*) |
DateTime |
datetime |
TIMESTAMP |
DATETIME, TIMESTAMP |
anything(*) |
Date |
date |
DATE |
DATE |
anything(*) |
Time |
time |
TIME |
TIME |
anything(*) |
TimeDelta |
timedelta |
INTERVAL |
? |
anything(*) |
List |
list |
ARRAY[] |
? |
anything(*) |
(*) SQLite won't enforce data types, so they just must be formatted properly.
References
One-to-one
Many-to-one
Many-to-many
Using on_remote
The Reference interface
The ReferenceSet interface
Expressions
Managing stores
Working with multiple threads
Using a global function
Using a base class
Creating a backend
Testing
It's easy to test that Storm features are working with new backends. There are base test classes in tests/store/database.py and tests/store/base.py which may be inherited by database-specific test cases. Look at other backends to get a feeling of how it works.
If these tests pass with a new backend, you may be pretty sure that Storm is working fine with the created backend.