数据保存到数据库中,当然少不了获取连接及执行sql
使用连接池,获取连接
@classmethod
def getConnection(cls):
'''
@return: 返回一个数据库连接的实例
'''
logger = logging.getLogger('myLogger.myutil.Myutil')
try:
if MyUtil.cnxpool is None:
user = MyUtil.loadProperty('mysql', 'user')
passwd = MyUtil.loadProperty('mysql', 'password')
host = MyUtil.loadProperty('mysql', 'host')
db = MyUtil.loadProperty('mysql', 'database')
dbconfig = {
"database":db,
"user":user,
"password":passwd,
"host":host,
"charset":"utf8"
}
MyUtil.cnxpool = mysql.connector.pooling.MySQLConnectionPool(pool_name="mypool", pool_size=10, **dbconfig)
except mysql.connector.Error as err:
MyUtil.cnxpool = None
if err.errno == errorcode.ER_ACCESS_DENIED_ERROR:
logger.info("用户名或密码不对")
elif err.errno == errorcode.ER_BAD_DB_ERROR:
logger.info("数据库不存在")
else:
logger.debug(err)
raise Exception('Can\'t connect to MySQL server')
return MyUtil.cnxpool.get_connection()
执行sql
def store2DB(self, sql, values):
'''
保存需求到表中
@param sql: 需要执行的sql
@param values: 元组类型,字段的值
@return: 执行结果, True or False
'''
# get connection
cnx = MyUtil.getConnection()
# get cursor
cursor = cnx.cursor()
try:
# execute sql
cursor.execute(sql, values)
res = True
self.logger.info('add view success')
except Exception, e:
self.logger.debug(e)
res = False
else:
# commit
cnx.commit()
# close resources
cursor.close()
MyUtil.closeConn(cnx)
return res
参考文章:mysql 连接池