如何在python中访问上下文管理器输出

2024-10-05 13:19:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我写了以下脚本:

import sqlite3
import os
from contextlib import contextmanager
from sqlite3 import Error


class DatabaseManager():

    def __init__(self, repoName, table_name):
        self.dbName = repoName
        self.tableName = table_name
        self.createTables()

    @contextmanager
    def db_connection(self):
        # Wait for max 30 seconds before timing out
        con = sqlite3.connect(self.dbName, timeout=30.0)
        yield con
        con.commit()
        con.close()

    @contextmanager
    def dbFetch(self, sqlExecute):
    
        with self.db_connection() as con:
            cur = con.execute(sqlExecute)
            return cur.fetchall()
            cur.close()


    def createTables(self):
       if self.tableName == "tableName":
            createSQL = "CREATE TABLE  if not exists tableName(source text, domain text, jsonExist text, jsonValue text);"

        with self.db_connection() as con:
            con.execute(createSQL) 

我想访问dbFetch(withsql query)的结果,我如何才能实现它。N0无论我做什么,它只显示<contextlib._GeneratorContextManager object at 0x01054CA0>

dbManager = DatabaseManager("dbSchema", "tableName")
dbManager.createTables()

response = dbManager.dbFetch("SELECT count(*) FROM {0} WHERE SOURCE = '{1}' AND DOMAIN = '{2}'; ".format("tableName", Source, Domain)

如何从dbFetch中获取输出


Tags: textfromimportselfdbdefconnectioncon

热门问题