我有一个工作模型可以json使用pydantic. 模型数据集如下所示:
data = {'thing_number': 123,
'thing_description': 'duck',
'thing_amount': 4.56}
Run Code Online (Sandbox Code Playgroud)
我想做的是将json文件列表作为数据集并能够验证它们。最终,该列表将转换为记录以pandas供进一步处理。我的目标是验证json看起来像这样的任意长的条目列表:
bigger_data = [{'thing_number': 123,
'thing_description': 'duck',
'thing_amount': 4.56},
{'thing_number': 456,
'thing_description': 'cow',
'thing_amount': 7.89}]
Run Code Online (Sandbox Code Playgroud)
我现在的基本设置如下。请注意,添加class ItemList是尝试使任意长度起作用的一部分。
from typing import List
from pydantic import BaseModel
from pydantic.schema import schema
import json
class Item(BaseModel):
thing_number: int
thing_description: str
thing_amount: float
class ItemList(BaseModel):
each_item: List[Item]
Run Code Online (Sandbox Code Playgroud)
然后,基本代码将生成我认为我在一个将接受Item对象的数组对象中寻找的内容。
item_schema = schema([ItemList])
print(json.dumps(item_schema, indent=2))
{
"definitions": {
"Item": {
"title": "Item", …Run Code Online (Sandbox Code Playgroud) 我正在尝试向流添加过滤器tcpdump。
我试图运行的表达式是:
tcpdump -i eth0 -U -w - host 192.168.2.29 and (port 22222 or port 22221 or port 80)
Run Code Online (Sandbox Code Playgroud)
这种特殊的格式会抛出:
bash: syntax error near unexpected token '('
Run Code Online (Sandbox Code Playgroud)
我预计这会基于THIS起作用。
以下工作不会引发错误:
a) tcpdump -i eth0 -U -w - host 192.168.2.29
b) tcpdump -i eth0 -U -w - port 22222
Run Code Online (Sandbox Code Playgroud)
我已经尝试了关联的每种排列都抛出相同的错误。
我正在尝试对查询集中包含多行的列进行简单求和。我的直接问题是(a)如何设置get_queryset()以包含列的总和以及(b)如何访问模板中的该元素?继这个问题之后:
#models.py
class ItemPrice( models.Model ):
price = models.DecimalField ( max_digits = 8, decimal_places=2 )
....
Run Code Online (Sandbox Code Playgroud)
提供了两个答案 - 一个使用.aggregate()我不相信会返回查询集的方法,并且.annotate()使用我相信将一个项目附加到查询集的方法。
因此,我预计以下内容会在此视图中的对象列表中添加另一个项目:
#views.py
def get_queryset(self):
# generate table and filter down to a subquery.
queryset = ItemPrice.objects.filter(<some_filter>)
# sum the price for each row in the subquery.
queryset = queryset.annotate(totals=Sum('price'))
return queryset
Run Code Online (Sandbox Code Playgroud)
然后在模板中,我将能够像这样迭代对象列表:
#template.html
{% for item in object_list %}
{{ item }}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)
期望其中一项(最后一项?)是price_sum并且余额可以作为price_sum.price。
但是,当我将以下内容添加到模板中时,我得到每个订单项的价格 - 没有求和。 …
我正在研究Django教程(这里).我在Mac上使用visual studio,VS在这段代码上一直显示错误:
latest_question_list = Question.objects.order_by('-pub_date')[:5]
Run Code Online (Sandbox Code Playgroud)
错误读取Class 'Question' has no 'objects' member.
这个例子构建了一个Questions Class实际上并没有直接拥有objects成员的例子,但代码运行正常,我认为Django中有一个内置成员objects.
因此,这让我相信visual studio调试器正在引发一个实际上并不存在的错误.
有没有办法来解决这个问题?
我查看preferences/setting并extensions查看是否有一个插件或设置引用可以用于Django以清除Visual Studio中的错误 - 我没有看到任何内容.
我有一个具有description属性和balance属性的查询集.目前,当我生成查询集时,它从最小到最大排序 - -
Model.objects.order_by('balance')
#output
Thing1 -120000
Thing2 -300
Thing3 7000
Thing4 100000
Run Code Online (Sandbox Code Playgroud)
我想订购的是降低绝对值,结果如下:
#Desired Output
Thing1 -120000
Thing4 100000
Thing3 7000
Thing2 -300
Run Code Online (Sandbox Code Playgroud)
我试过在里面传递各种方法,order_by()但我认为它需要是一个SQL类型的参数 - 我无法弄清楚.我发现这个使用了func expression注释时.我无法使用它order_by并且文档没有多大帮助.
有没有办法以这种方式订购查询集?
我需要进行一个以第二列中的值为条件的数学运算.这是设置.
给定一个简单的dataframe(df):
df = pd.DataFrame({
'col1' : ['A', 'A', 'B', np.nan, 'D', 'C'],
'col2' : [2, 1, 9, 8, 7, 4],
'col3': [0, 1, 9, 4, 2, 3],
})
In [11]: df
Out[11]:
col1 col2 col3
0 A 2 0
1 A 1 1
2 B 9 9
3 NaN 8 4
4 D 7 2
5 C 4 3
Run Code Online (Sandbox Code Playgroud)
我可以添加一个新的列(math)然后用基于10和的总和的数学表达式填充它col3.
df['math'] = 10 + df['col3']
In [14]: df
Out[14]:
col1 col2 col3 math …Run Code Online (Sandbox Code Playgroud) 这已经部分覆盖。
该dtype of df["D"] = np.nan在接受的答案是dtype=numpy.float64。
有没有办法在每个单元格中初始化一个空列表?
尝试过,df["D"] = [[]] * len(df)但是所有值都指向同一对象,将一个值设置为一个将全部设置。
df = pd.DataFrame({"A": [1,2,3], "B": [2,3,4]})
df
A B
0 1 2
1 2 3
2 3 4
df["D"] = [[]] * len(df)
df
A B D
0 1 2 []
1 2 3 []
2 3 4 []
df['D'][1].append(['a','b','c','d'])
df
A B D
0 1 2 [[a, b, c, d]]
1 2 3 [[a, b, c, d]]
2 3 4 …Run Code Online (Sandbox Code Playgroud) 看了几十个以前的答案,我很惊讶我找不到任何东西......
我将pahomqtt 库用于一个非常简单的 python 程序来报告一些数据(在 Raspberry Pi 上运行)。我从 python 程序 (my_program.py) 中导入的是:
import paho.mqtt.client as mqtt
Run Code Online (Sandbox Code Playgroud)
如果我使用python my_program.py它从命令行运行程序,它运行时不会出错。但是,我试图将其设置为系统服务来管理其执行。我已经用类似的 python 程序完成了十几次,设置了各种 bash 脚本和服务文件。除了这个,他们都可以工作。我提到这一点是因为我认为它与 bash 或服务本身无关。为了完整起见,这里是设置。
从运行的 bash 脚本/systemd -
## Service (my_program.service):
ExecStart=/home/pi/my_program.sh
## and bash (my_program.sh)
python /home/pi/my/directory/my_program.py
Run Code Online (Sandbox Code Playgroud)
当我去启动服务时,我得到:
pi@ArmstrongSE:/etc/systemd/system $ sudo systemctl status my_program
* my_program.service
Loaded: loaded (/etc/systemd/system/my_program.service; static; vendor preset: enabled)
Active: failed (Result: exit-code) since Sat 2019-11-23 13:59:58 PST; 22s ago
Process: 31100 ExecStart=/home/pi/my_program.sh (code=exited, status=1/FAILURE)
Main PID: 31100 (code=exited, status=1/FAILURE)
Nov …Run Code Online (Sandbox Code Playgroud) 我正在尝试从模型中汇总整数列表。整数派生的@property字段是装饰器字段。装饰器按预期工作,并且在内template.html(如果直接传递的话)显示没有问题。但是,如果尝试将@property字段.aggregate()传递给template引发错误的上下文,则该错误基本上会说出一个错误,Cannot resolve keyword 'sum_thing' into field.然后是一系列不包含任何装饰器字段的模型字段。
我的问题是-如何汇总(求和)模型的派生字段?
#models.py
class Foo(models.Model):
a = 10 # a & b are both
b = 5 # models.IntegerField() items
@property
def sum_thing(self):
return self.a - self.b
#views.py
class Bar(generic.ListView):
def get_context_data(self, **kwargs):
qs = Foo.object.all()
totals = {}
totals['sumthing'] = qs.aggregate(total=Sum('sum_thing')
context = {
'totals': totals
}
return context
Run Code Online (Sandbox Code Playgroud)
**我已经大大简化了models.py和views.py。