Size: 521
Comment:
|
Size: 2906
Comment:
|
Deletions are marked like this. | Additions are marked like this. |
Line 1: | Line 1: |
Line 8: | Line 6: |
== Supported databases == | == 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}}} |
Line 22: | Line 38: |
=== 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''(*) || ## || '''Decimal''' || Decimal || DECIMAL, NUMERIC, MONEY || DECIMAL, NUMERIC || ''anything''(*) || || '''Unicode''' || unicode || TEXT, VARCHAR, CHAR || TEXT, VARCHAR, CHAR || ''anything''(*) || || '''Chars''' || str || BYTEA || BLOB, BINARY, VARBINARY || ''anything''(*) || || '''Pickle''' || ''any'' || BYTEA || BLOB, BINARY, VARBINARY || ''anything''(*) || || '''Date``Time''' || datetime || TIMESTAMP || DATETIME, TIMESTAMP || ''anything''(*) || || '''Date''' || date || DATE || DATE || ''anything''(*) || || '''Time''' || time || TIME || TIME || ''anything''(*) || || '''Time``Delta''' || timedelta || INTERVAL || ? || ''anything''(*) || || '''List''' || list || ARRAY[] || ? || ''anything''(*) || (*) SQLite won't enforce data types, so they just must be formatted properly. |
|
Line 30: | Line 64: |
=== Using on_remote === |
|
Line 36: | Line 72: |
== Managing stores == === Working with multiple threads === === Using a global function === === Using a base class === |
|
Line 37: | Line 81: |
=== 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. |
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.