Skip to main content

Requirements

  • Python 3.3 or later

Features

  • Under construction

Setup

$ pip install SimpleORM

History

0.1.0 (2014-03-13)

  • first release

0.1.1 (2014-03-14)

  • fixed bugs

  • added one more example

0.2.0 (2014-03-30)

  • added dynamic SQL function

0.2.1 (2014-03-30)

  • fixed bug

Example

Define select statement in the source code and get return value as instances of Employee class.

from simpleorm import BaseDao
from classes import Employee
from collections import OrderedDict

class SelectEmployeeAll(BaseDao):
    sql = '''
SELECT A.ID
      ,A.NAME
      ,B.NAME AS BOSS_NAME
  FROM EMPLOYEE A
  LEFT OUTER JOIN EMPLOYEE B
    ON B.ID = A.BOSS
'''

if __name__ == '__main__':
    param = OrderedDict()
    result = SelectEmployeeAll(dbfile = 'test.db', return_type = Employee).execute(param)
    for elem in result:
        print(elem.id, elem.name, elem.boss_name)
class Employee:
    id = None
    name = None
    boss_name = None

Define select statement out of the source code and get return value as tuple.

from simpleorm import BaseDao
from collections import OrderedDict

class SelectEmployee(BaseDao):
    pass

if __name__ == '__main__':
    param = OrderedDict()
    param['name'] = 'Taro%'
    result = SelectEmployee(dbfile = 'test.db').execute(param)
    for elem in result:
        print(elem['ID'], elem['Name'], elem['age'], elem['bOsS'])
-- select_employee.sql
SELECT ID
      ,NAME
      ,AGE
      ,BOSS
  FROM EMPLOYEE
 WHERE NAME LIKE ?
 ORDER BY AGE ASC

Define dynamic select statement.

from simpleorm import BaseDao
from collections import OrderedDict

class SelectEmployeeDynamic(BaseDao):
    pass

if __name__ == '__main__':
    param = OrderedDict()
    param['name'] = 'Taro%'
    param['age'] = 20
    param['_flg'] = True
    result = SelectEmployeeDynamic(dbfile = 'test.db').execute(param)
    for elem in result:
        print(elem['ID'], elem['Name'], elem['age'], elem['bOsS'])

    param2 = OrderedDict()
    param2['name'] = 'Taro%'
    result2 = SelectEmployeeDynamic(dbfile = 'test.db').execute(param2)
    for elem in result2:
        print(elem['ID'], elem['Name'], elem['age'], elem['bOsS'])
-- select_employee_dynamic.sql
SELECT ID
      ,NAME
      ,AGE
      ,BOSS
  FROM EMPLOYEE
 WHERE NAME LIKE ?
if param.get('_flg', False) == True:
       AND AGE >= ?
end
 ORDER BY AGE ASC

Define insert statement.

from simpleorm import BaseDao
from collections import OrderedDict

class InsertEmployee(BaseDao):
    sql = 'INSERT INTO EMPLOYEE (ID, NAME, AGE, BOSS) VALUES (?, ?, ?, ?)'

if __name__ == '__main__':
    param = OrderedDict()
    param['id'] = 4
    param['name'] = 'Jiro Tanaka'
    param['age'] = 24
    param['boss'] = 3
    result = InsertEmployee(dbfile = 'test.db').execute(param)
    print(result)

Bulk insert.

from simpleorm import BaseDao
from collections import OrderedDict

class InsertEmployee(BaseDao):
    sql = 'INSERT INTO EMPLOYEE (ID, NAME, AGE, BOSS) VALUES (?, ?, ?, ?)'

if __name__ == '__main__':
    param = list()
    for i in range(10000):
        elem = OrderedDict()
        elem['id'] = i
        elem['name'] = '{}'.format(i)
        elem['age'] = i
        elem['boss'] = None
        param.append(elem)

    result = InsertEmployee(dbfile = 'test.db', commit_interval = 100, isolation_level = 'DEFERRED').execute(param)
    print('Rows affected:{}'.format(result))

Release history Release notifications | RSS feed

This release

0.2.1 This release

0.2.0

0.1.1

1 file

0.1.0

1 file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page