2 HCE project, Python bindings, Distributed Tasks Manager application. 3 Event objects definitions. 7 @author Oleksii <developers.hce@gmail.com> 8 @link: http://hierarchical-cluster-engine.com/ 9 @copyright: Copyright © 2013-2014 IOIX Ukraine 10 @license: http://hierarchical-cluster-engine.com/license/ 15 from sqlalchemy.sql
import select
16 from sqlalchemy
import delete
18 from sqlalchemy.engine.reflection
import Inspector
19 from sqlalchemy
import create_engine, MetaData, Table
20 from sqlalchemy
import schema, types
21 from sqlalchemy.pool
import StaticPool
22 from sqlalchemy.pool
import SingletonThreadPool
23 from sqlalchemy.orm
import sessionmaker
38 db_name = config_dic[
"db_name"]
40 db_name - database name 42 db_name=sqlite:// # in memory 43 db_name=sqlite:///:memory: # in memory 44 db_name=sqlite:///del.db # relative path to file 45 db_name=sqlite:////tmp/del.db # absolute path to file 48 engine = create_engine(
'sqlite:///:memory:', echo=
True)
49 Base.metadata.create_all(engine)
50 Session = sessionmaker(bind=engine)
106 fetched.append(db.session.query(
type(obj)).filter(clause).first())
109 db.session.rollback()
123 def sql(self, obj, clause):
127 fetched.append(db.session.query(
type(obj)).from_statement(clause).first())
129 db.session.rollback()
146 conn = db.engine.connect()
147 if hasattr(tasks,
"__len__"):
149 fetched.append(conn.execute(select([
type(task)])).fetchall())
151 fetched.append(conn.execute(select([
type(tasks)])).fetchall())
153 db.session.rollback()
171 updated_task = db.session.query(
type(obj)).filter(clause).first()
173 attributes = [attr
for attr
in dir(obj)
if not attr.startswith(
'__')
and not attr.startswith(
'_')
and getattr(obj,attr)]
174 for attr
in attributes:
175 setattr(updated_task, attr, getattr(obj, attr))
176 updated.append(updated_task)
179 db.session.rollback()
195 if hasattr(tasks,
"__len__"):
197 db.session.merge(task)
199 db.session.merge(tasks)
202 db.session.rollback()
219 deleted_task = db.session.query(
type(obj)).filter(clause).first()
221 deleted.append(deleted_task)
222 db.session.delete(deleted_task)
225 db.session.rollback()
241 conn = db.engine.connect()
242 if hasattr(tasks,
"__len__"):
249 ress = db.session.query(tasks).filter(tasks.UThreads==
"").first()
252 db.session.delete(res)
255 db.session.rollback()
266 from sqlalchemy.ext.declarative
import declarative_base
267 Base = declarative_base()
268 from sqlalchemy
import Column, Integer, String
273 __tablename__ =
"tasks_data_table" 274 tableid = Column(Integer, primary_key=
True)
275 id = Column(Integer, unique=
True, index=
True)
276 data = Column(String, unique=
False, index=
False)
284 if __name__ ==
'__main__':
286 conf = {
'db_name':
'memory'}
290 for instance
in db.session.query(TasksDataTable).order_by(TasksDataTable.id):
291 print instance.id, instance.data
def insertOnUpdate(self, tasks, clause)
insertOnUpdate insert new object or update object if exists in the table
def insert(self, task)
insert insert objects into the database
def sql(self, obj, clause)
sql fetch objects from the database
def getErrorCode(self)
get error code return error code last performed action (e.g.
def __init__(self, config_dic)
constructor initialize fields
def deleteAll(self, tasks)
deleteAll delete all objects from the database
Class describes structures of task item used in TaskDataManager module.
Common use wrapper class to interact with the ORM databases Provide CRUD interface (create...
def update(self, obj, clause)
update update objects in the database
def getErrorMsg(self)
get error message return error message last performed action (e.g.
def fetch(self, obj, clause)
fetch fetch objects from the database
def delete(self, obj, clause)
delete delete objects from the database
def fetchAll(self, tasks)
fetchAll fetch all objects from the database