db_helper.py是数据库操作包,主要有两个函数,分别是read()数据库读操作函数和write()数据库写操作函数。这个包的代码是从小戴同学分享的博文改造过来的。

 1 #!/usr/bin/env python
 2 # coding=utf-8
 3 
 4 import psycopg2
 5 from common import log_helper
 6 from config import const
 7 
 8 # 初始化数据库参数
 9 db_name = const.DB_NAME
10 db_host = const.DB_HOST
11 db_port = const.DB_PORT
12 db_user = const.DB_USER
13 db_pass = const.DB_PASS
14 
15 
16 def read(sql):
17     """
18     连接pg数据库并进行数据查询
19     如果连接失败,会把错误写入日志中,并返回false,如果sql执行失败,也会把错误写入日志中,并返回false
20     如果所有执行正常,则返回查询到的数据,这个数据是经过转换的,转成字典格式,方便模板调用,其中字典的key是数据表里的字段名
21     """
22     try:
23         # 连接数据库
24         conn = psycopg2.connect(database=db_name, user=db_user, password=db_pass, host=db_host, port=db_port)
25         # 获取游标
26         cursor = conn.cursor()
27     except Exception as e:
28         print(e.args)
29         log_helper.error('连接数据库失败:' + str(e.args))
30         return False
31     try:
32         # 执行查询操作
33         cursor.execute(sql)
34         # 将返回的结果转换成字典格式
35         data = [dict((cursor.description[i][0], value) for i, value in enumerate(row)) for row in cursor.fetchall()]
36     except Exception as e:
37         print(e.args)
38         log_helper.error('sql执行失败:' + str(e.args) + ' sql:' + str(sql))
39         return False
40     finally:
41         # 关闭游标和数据库链接
42         cursor.close()
43         conn.close()
44     # 返回结果(字典格式)
45     return data
46 
47 
48 def write(sql, vars):
49     """
50     连接pg数据库并进行写的操作
51     如果连接失败,会把错误写入日志中,并返回false,如果sql执行失败,也会把错误写入日志中,并返回false,如果所有执行正常,则返回true
52     """
53     try:
54         # 连接数据库
55         conn = psycopg2.connect(database=db_name, user=db_user, password=db_pass, host=db_host, port=db_port)
56         # 获取游标
57         cursor = conn.cursor()
58     except Exception as e:
59         print(e.args)
60         log_helper.error('连接数据库失败:' + str(e.args))
61         return False
62     try:
63         # 执行sql语句
64         cursor.execute(sql, vars)
65         # 提交事务
66         conn.commit()
67     except Exception as e:
68         print(e.args)
69         # 如果出错,则事务回滚
70         conn.rollback()
71         log_helper.error('sql执行失败:' + str(e.args) + ' sql:' + str(sql))
72         return False
73     else:
74         # 获取数据
75         try:
76             data = [dict((cursor.description[i][0], value) for i, value in enumerate(row))
77                          for row in cursor.fetchall()]
78         except Exception as e:
79             # 没有设置returning或执行修改或删除语句时,记录不存在
80             data = None
81     finally:
82         # 关闭游标和数据库链接
83         cursor.close()
84         conn.close()
85 
86     # 如果写入数据后,将数据库返回的数据返回给调用者
87     return data
View Code

相关文章:

  • 2021-09-07
  • 2021-09-21
  • 2021-06-10
  • 2021-09-11
  • 2021-08-03
  • 2021-12-31
  • 2021-11-13
  • 2022-12-23
猜你喜欢
  • 2021-05-21
  • 2022-03-02
  • 2021-10-31
  • 2022-01-07
  • 2021-11-30
  • 2021-06-16
相关资源
相似解决方案