Difference between revisions of "PyLoDStorage"
Jump to navigation
Jump to search
| Line 33: | Line 33: | ||
return listOfDicts | return listOfDicts | ||
</source> | </source> | ||
| + | The above list of dict anc be stored in a Person table with the following structure: | ||
| + | <uml> | ||
| + | package Royals { | ||
| + | class Person << Entity >> { | ||
| + | age : FLOAT | ||
| + | born : DATE | ||
| + | lastmodified : TIMESTAMP | ||
| + | name : TEXT <<PK>> | ||
| + | numberInLine : INTEGER | ||
| + | ofAge : BOOLEAN | ||
| + | wikidataurl : TEXT | ||
| + | } | ||
| + | } | ||
| + | </uml> | ||
| + | The idea is to derive the necessary DDL and SQL command automatically: | ||
| + | <source lang='sql'> | ||
| + | CREATE TABLE Family(name TEXT PRIMARY KEY,country TEXT,lastmodified TIMESTAMP) | ||
| + | INSERT INTO Family (name,country,lastmodified) values (:name,:country,:lastmodified) | ||
| + | </source> | ||
| + | and use them via simple API | ||
| + | <source lang='python'> | ||
| + | from lodstorage.sample import Sample | ||
| + | from lodstorage.sql import SQLDB, EntityInfo | ||
| + | |||
| + | listOfRecords=Sample.getRoyals() | ||
| + | sqlDB=SQLDB() | ||
| + | entityName='Person' | ||
| + | primaryKey='name' | ||
| + | entityInfo=self.sqlDB.createTable(listOfRecords[:10],entityName,primaryKey) | ||
| + | sqlDB.store(listOfRecords,entityInfo) | ||
| + | resultList=self.sqlDB.queryAll(entityInfo) | ||
| + | </source> | ||
| + | |||
| + | The resultList will be the same as the original listOfRecords. | ||
Revision as of 14:55, 10 September 2020
OsProject
| OsProject | |
|---|---|
| id | PyLodStorage |
| state | |
| owner | Wolfgang Fahl |
| title | python List of Dict (Table) Storage library |
| url | https://github.com/WolfgangFahl/pyLodStorage |
| version | 0.0.4 |
| description | |
| date | 2020/09/10 |
| since | |
| until | |
see also DgraphAndWeaviateTest
List of Dicts = Table
a list of dicts(Hashtables) in python can be interpreted as Table which is suitable to be stored i a relational database like sqlite3
Royals example
@staticmethod
def getRoyals():
listOfDicts=[
{'name': 'Elizabeth Alexandra Mary Windsor', 'born': Sample.dob('1926-04-21'), 'numberInLine': 0, 'wikidataurl': 'https://www.wikidata.org/wiki/Q9682' },
{'name': 'Charles, Prince of Wales', 'born': Sample.dob('1948-11-14'), 'numberInLine': 1, 'wikidataurl': 'https://www.wikidata.org/wiki/Q43274' },
{'name': 'George of Cambridge', 'born': Sample.dob('2013-07-22'), 'numberInLine': 3, 'wikidataurl': 'https://www.wikidata.org/wiki/Q1359041'},
{'name': 'Harry Duke of Sussex', 'born': Sample.dob('1984-09-15'), 'numberInLine': 6, 'wikidataurl': 'https://www.wikidata.org/wiki/Q152316'}
]
today=date.today()
for person in listOfDicts:
born=person['born']
age=(today - born).days / 365.2425
person['age']=age
person['ofAge']=age>=18
person['lastmodified']=datetime.now()
return listOfDicts
The above list of dict anc be stored in a Person table with the following structure:

The idea is to derive the necessary DDL and SQL command automatically:
CREATE TABLE Family(name TEXT PRIMARY KEY,country TEXT,lastmodified TIMESTAMP)
INSERT INTO Family (name,country,lastmodified) values (:name,:country,:lastmodified)
and use them via simple API
from lodstorage.sample import Sample
from lodstorage.sql import SQLDB, EntityInfo
listOfRecords=Sample.getRoyals()
sqlDB=SQLDB()
entityName='Person'
primaryKey='name'
entityInfo=self.sqlDB.createTable(listOfRecords[:10],entityName,primaryKey)
sqlDB.store(listOfRecords,entityInfo)
resultList=self.sqlDB.queryAll(entityInfo)
The resultList will be the same as the original listOfRecords.