我正在尝试执行一些查询以获取有关某些图像的信息页面.我写了一个函数
function get_recent_highs($view_deleted_images=false)
{
$lower = $this->database->conn->real_escape_string($this->page_size * ($this->page_number - 1));
$query = "SELECT image_id, date_uploaded FROM `images` ORDER BY ((SELECT SUM( image_id=`images`.image_id ) FROM `image_votes` AS score) / (SELECT DATEDIFF( NOW( ) , date_uploaded ) AS diff)) DESC LIMIT " . $this->page_size . " OFFSET $lower"; //move to database class
$result = $this->database->query($query);
$page = array();
while($row = $result->fetch_assoc())
{
try
{
array_push($page, new Image($row['image_id'], $view_deleted_images));
}
catch(ImageNotFoundException $e)
{
throw $e;
}
}
return $page;
}
Run Code Online (Sandbox Code Playgroud)
根据其受欢迎程度选择这些图像的页面.我编写了一个Database …
我试图通过运行SELECT (SELECT COUNT(vote_id) AS vote_up FROM投票WHERE vote='UP'),(SELECT COUNT(vote_id) AS vote_down FROM投票来找出它在MYSQL中收到的upvotes和downvotes的数量之间的差异来确定一个条目的得分WHERE vote='DOWN'),(vote_up - vote_down AS vote_score).当我尝试运行它时,它告诉我,我没有正确的语法.我究竟做错了什么?
还有,有更好的方法来写这个吗?
最后,找到票数最高和最低的项目的理想方法是什么?我会ORDER BY [above query]吗?
我正在尝试从异步队列中提取任务,并在发生异常时调用给定的错误处理程序。排队项目以字典形式给出(由 排队enqueue_task),其中包含任务、可能的错误处理程序以及错误处理程序可能需要的任何 args/kwargs。由于我想在任务完成时处理任何错误,因此我将每个任务映射到出队字典,并在发生异常时尝试访问它。
async def _check_tasks(self):
try:
while self._check_tasks_task or not self._check_task_queue.empty():
tasks = []
details = {}
try:
while len(tasks) < self._CHECK_TASKS_MAX_COUNT:
detail = self._check_task_queue.get_nowait()
task = detail['task']
tasks.append(task)
details[task] = detail
except asyncio.QueueEmpty:
pass
if tasks:
for task in asyncio.as_completed(tasks):
try:
await task
except Exception as e:
logger.exception('')
detail = details[task]
error_handler = detail.get('error_handler')
error_handler_args = detail.get('error_handler_args', [])
error_handler_kwargs = detail.get('error_handler_kwargs', {})
if error_handler:
logger.info('calling error handler')
if inspect.iscoroutinefunction(error_handler):
self.enqueue_task(
task=error_handler(
e,
*error_handler_args,
**error_handler_kwargs
)
) …Run Code Online (Sandbox Code Playgroud) 我有一个对象,我存储位.
class Bitset:
def __init__(self, bitstring):
self.bitlist = []
for char in bitstring:
self.bitlist.append(int(char))
def flipBit(self, index):
val = self.bitlist[index]
val = (val + 1) % 2
self.bitlist[index] = val
self.newBitstring()
def bitstring(self):
newString = ''
for val in self.bitlist:
newString = newString + str(val)
return newString
def __len__(self):
return len(self.bitlist)
def __str__(self):
return self.bitstring()
def __repr__(self):
return self.bitstring()
Run Code Online (Sandbox Code Playgroud)
无论如何我可以将这些位转换为浮点数吗?谢谢.