本文整理汇总了Python中pyasm.search.DbContainer.release_thread_sql方法的典型用法代码示例。如果您正苦于以下问题:Python DbContainer.release_thread_sql方法的具体用法?Python DbContainer.release_thread_sql怎么用?Python DbContainer.release_thread_sql使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类pyasm.search.DbContainer
的用法示例。
在下文中一共展示了DbContainer.release_thread_sql方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: run_sql
# 需要导入模块: from pyasm.search import DbContainer [as 别名]
# 或者: from pyasm.search.DbContainer import release_thread_sql [as 别名]
def run_sql(my, sql):
''' run an sql statement. my is an instance of the dynamically created
<project_type>Upgrade class. If SqlException arise, it will record the
error, and the user is advised to check if the error is a result of syntax
error or the upgrade function is doing redundant work'''
project = Project.get_by_code(my.project_code)
db_resource = project.get_project_db_resource()
db = DbContainer.get(db_resource)
#if not my.quiet:
# print sql
try:
db.do_update(sql, quiet=my.quiet)
except SqlException, e:
print "Error: ", e
# TEST for Sqlite
if str(e).startswith("duplicate column name:"):
pass
elif str(e).startswith("table") and str(e).endswith("already exists"):
pass
elif not my.quiet:
print
print "WARNING: Skipping due to SqlException..."
print "Message: ", e
print
members = inspect.getmembers(my, predicate=inspect.ismethod)
key = '%s|%s' %(my.project_code, my.upgrade_class)
Container.append_seq(key, (my.upgrade_method, str(e)))
"""
for name, member in members:
# there should only be 1 upgrade method
if name.startswith('upgrade_v'):
Container.append_seq(key, (my.upgrade_method, str(e)))
break
"""
# to prevent sql error affecting query that follows the Upgrade
#DbContainer.abort_thread_sql()
DbContainer.release_thread_sql()
示例2: execute
# 需要导入模块: from pyasm.search import DbContainer [as 别名]
# 或者: from pyasm.search.DbContainer import release_thread_sql [as 别名]
def execute(self):
from pyasm.search import DbContainer
from pyasm.security import Security
delete_group = "admin"
security = Environment.get_security()
if not security.is_in_group(delete_group):
raise Exception("Only users in [%s] can delete projects"%delete_group)
project_code = self.kwargs.get("project_code")
if project_code:
project = Project.get_by_code(project_code)
else:
search_key = self.kwargs.get("search_key")
project = Search.get_by_search_key(search_key)
project_code = project.get_code()
assert project_code
assert project
# dump the database
# remove all dependencies the sthpw database
related_types = self.kwargs.get("related_types")
if related_types:
for related_type in related_types:
search = Search(related_type)
if related_type == "sthpw/schema":
search.add_filter("code", project_code)
else:
search.add_filter("project_code", project_code)
count = search.get_count()
sobjects = search.get_sobjects()
for sobject in sobjects:
if related_type == 'sthpw/snapshot':
self.delete_snapshot(sobject)
else:
sobject.delete()
sthpw_project = Project.get_by_code('sthpw')
# delete the database
sthpw_db_resource = sthpw_project.get_project_db_resource()
db_resource = project.get_project_db_resource()
impl = sthpw_db_resource.get_database_impl()
deleted_impl = db_resource.get_database_impl()
if not impl.database_exists(db_resource):
# remove the project entry
project.delete()
return
# close this connection to the project to be deleted
sql = DbContainer.get(db_resource)
sql.close()
if sql.get_database_type() == 'Sqlite':
DbContainer.release_thread_sql()
result = impl.drop_database(db_resource)
# this is just extra check
if result and "failed" in result:
raise TacticException(result)
Container.put("Sql:database_exists:%s"%db_resource.get_key(), None)
sql = DbContainer.get(db_resource, connect=True)
if sql:
try:
if sql.get_database_type() != 'Sqlite':
if sql.get_connection() and sql.connect():
raise TacticException("Database [%s] still exists. There could still be connections to it."%project_code)
except SqlException as e:
pass
# remove the project entry
project.delete(triggers=False)
schema = Schema.get_by_code(project_code)
if schema:
schema.delete()
# Delete project specific login group and login in group entries
expr = "@SOBJECT(sthpw/login_group['project_code','%s'])"%project_code
expr2 = "@SOBJECT(sthpw/login_group['project_code','%s'].sthpw/login_in_group)"%project_code
sobjs = Search.eval(expr2)
for sobj in sobjs:
sobj.delete()
sobjs = Search.eval(expr)
#.........这里部分代码省略.........
示例3: execute
# 需要导入模块: from pyasm.search import DbContainer [as 别名]
# 或者: from pyasm.search.DbContainer import release_thread_sql [as 别名]
def execute(my):
from pyasm.search import DbContainer
project_code = my.kwargs.get("project_code")
if project_code:
project = Project.get_by_code(project_code)
else:
search_key = my.kwargs.get("search_key")
project = Search.get_by_search_key(search_key)
project_code = project.get_code()
assert project_code
assert project
# dump the database
# remove all dependencies the sthpw database
related_types = my.kwargs.get("related_types")
if related_types:
for related_type in related_types:
search = Search(related_type)
if related_type == "sthpw/schema":
search.add_filter("code", project_code)
else:
search.add_filter("project_code", project_code)
count = search.get_count()
sobjects = search.get_sobjects()
for sobject in sobjects:
if related_type == 'sthpw/snapshot':
my.delete_snapshot(sobject)
else:
sobject.delete()
sthpw_project = Project.get_by_code('sthpw')
# delete the database
sthpw_db_resource = sthpw_project.get_project_db_resource()
db_resource = project.get_project_db_resource()
impl = sthpw_db_resource.get_database_impl()
deleted_impl = db_resource.get_database_impl()
if not impl.database_exists(db_resource):
# remove the project entry
project.delete()
return
# close this connection to the project to be deleted
sql = DbContainer.get(db_resource)
sql.close()
if sql.get_database_type() == 'Sqlite':
DbContainer.release_thread_sql()
result = impl.drop_database(db_resource)
# this is just extra check
if result and "failed" in result:
raise TacticException(result)
Container.put("Sql:database_exists:%s"%db_resource.get_key(), None)
sql = DbContainer.get(db_resource, connect=True)
if sql:
try:
if sql.get_database_type() != 'Sqlite':
if sql.get_connection() and sql.connect():
raise TacticException("Database [%s] still exists. There could still be connections to it."%project_code)
except SqlException, e:
pass