fix:修复sql_response_print的问题,sql_response_print有可能是None/dict/list

fix:增加sqlitedemo,修复sqlite3查询数据报错的问题
This commit is contained in:
duanchao.bill
2022-06-16 11:38:25 +08:00
parent b19c931284
commit 05425452ee
4 changed files with 73 additions and 9 deletions

View File

@@ -13,7 +13,7 @@ class DBEngine(object):
"""
engine = create_engine(db_uri)
self.session = sessionmaker(bind=engine)()
self.session = sessionmaker(bind=engine, autocommit=True)()
@staticmethod
def value_decode(row: dict):
@@ -38,11 +38,13 @@ class DBEngine(object):
def _fetch(self, query, size=-1, commit=True):
result = self.session.execute(query)
self.session.commit() if commit else 0
# self.session.commit() if commit else 0
if query.upper()[:6] == "SELECT":
if size < 0:
al = result.fetchall()
al = [dict(el) for el in al]
for el in al:
self.value_decode(el)
return al or None
elif size == 1:
on = dict(result.fetchone())
@@ -51,6 +53,8 @@ class DBEngine(object):
else:
mny = result.fetchmany(size)
mny = [dict(el) for el in mny]
for el in mny:
self.value_decode(el)
return mny or None
elif query.upper()[:6] in ("UPDATE", "DELETE", "INSERT"):
return {"rowcount": result.rowcount}
@@ -75,4 +79,7 @@ class DBEngine(object):
if __name__ == "__main__":
db = DBEngine(f"mysql+pymysql://xxxxx:xxxxx@10.0.0.1:3306/dbname?charset=utf8mb4")
# db = DBEngine(f"mysql+pymysql://xxxxx:xxxxx@10.0.0.1:3306/dbname?charset=utf8mb4")
db = DBEngine(f"sqlite:////Users/bytedance/HttpRunner/examples/data/sqlite.db")
print(db.fetchmany("select* from student", 5))
print(db.fetchmany("select* from student", 5))