def execute(self, sql, args=None):
sql = sql.replace('COLLATE NOCASE', '') # Needed for case insensitivity in SQLite which is default in MySQL.
if args is None:
args = []
if args:
# eww
sql = sql.replace('?', '%s')
try:
p = perf.start()
self.cursor.execute(sql, args)
perf.check(p, 'slow_query', (sql, args), 'mysql')
return self.cursor.fetchall()
except MySQLdb.Warning as e:
if e.args[0] == 1050 or e.args[0] == 1051:
pass # we don't care if a CREATE IF NOT EXISTS raises an "already exists" warning or DROP TABLE IF NOT EXISTS raises an "unknown table" warning.
elif e.args[0] == 1062:
pass # We don't care if an INSERT IGNORE INTO didn't do anything.
else:
raise
except MySQLdb.Error as e:
raise DatabaseException('Failed to execute `{sql}` with `{args}` because of `{e}`'.format(sql=sql, args=args, e=e)) from e
database_mysql.py 文件源码
python
阅读 23
收藏 0
点赞 0
评论 0
评论列表
文章目录