我正在使用Django和Python 3.7。我在弄清楚如何编写Django查询(其中有一个子查询作为where子句的一部分)时遇到了麻烦。这是模型...
class Article(models.Model):
objects = ArticleManager()
title = models.TextField(default='', null=False)
created_on = models.DateTimeField(auto_now_add=True)
class ArticleStat(models.Model):
objects = ArticleStatManager()
article = models.ForeignKey(Article, on_delete=models.CASCADE, related_name='articlestats')
elapsed_time_in_seconds = models.IntegerField(default=0, null=False)
votes = models.FloatField(default=0, null=False)
class StatByHour(models.Model):
index = models.FloatField(default=0)
# this tracks the hour when the article came out
hour_of_day = IntegerField(
null=False,
validators=[
MaxValueValidator(23),
MinValueValidator(0)
]
)
Run Code Online (Sandbox Code Playgroud)
在PostGres中,查询看起来类似于
SELECT *
FROM article a,
articlestat ast
WHERE a.id = ast.article_id
AND ast.votes > 100 * (
SELECT "index"
FROM statbyhour
WHERE hour_of_day …
Run Code Online (Sandbox Code Playgroud) 我想在 python 3.7 中使用 trie 搜索,以便将字符串与某些给定的单词匹配。trie 搜索算法实际上非常快,但是我也想使用我的 CPU 的所有内核。假设我的电脑有 8 个内核,我想使用其中的 7 个。因此,我将我的单词数据库拆分为 7 个同样大的列表,并创建了每个列表。(这是并行化代码的基本思想)
但是,当我从多处理模块调用 Process() 时,Process().start() 方法可能会在真实数据库上占用几秒钟的时间。(搜索本身大约需要一微秒)。
老实说,我还不是一个专业的程序员,这意味着我可能在代码中犯了一些重大错误。有人看到这个过程的开始如此缓慢的原因吗?
请考虑到我使用比下面的 trie 更大的数据库测试了脚本。我还测试了每次只调用 1 个进程的脚本,这也明显变慢了。我想提供更少的代码,但是我认为很高兴看到运行问题。如果需要,我还可以提供其他信息。
import string
import sys
import time
from multiprocessing import Process, Manager
from itertools import combinations_with_replacement
class TrieNode:
def __init__(self):
self.isString = False
self.children = {}
def insertString(self, word, root):
currentNode = root
for char in word:
if char not in currentNode.children:
currentNode.children[char] = TrieNode()
currentNode = currentNode.children[char]
currentNode.isString = True
def findStrings(self, prefix, node, results): …
Run Code Online (Sandbox Code Playgroud) 如何实现用户对帖子点赞功能?我遵循了其他在线用户发布的代码;但是,我收到以下错误:
AmbiguousForeignKeysError:
Could not determine join condition between parent/child tables on relationship
User.posts - there are multiple foreign key paths linking the tables. Specify
the 'foreign_keys' argument, providing a list of those columns which should be
counted as containing
Run Code Online (Sandbox Code Playgroud)
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(20), unique=True, nullable=False)
email = db.Column(db.String(120), unique=True, nullable=False)
image_file = db.Column(db.String(20), nullable=False, default='default.jpg')
password = db.Column(db.String(60), nullable=False)
posts = db.relationship('Post', backref='author', lazy=True)
def __repr__(self):
return "{}, {}, {}".format(self.username, self.email, self.image_file)
liked = db.relationship( …
Run Code Online (Sandbox Code Playgroud)