小编bvm*_*ode的帖子

如何连接 Django 查询集中的两个模型字段?

考虑一个名为 的表DataTable。它有两个字段:AB

我想返回该表中的所有行,并注释一个名为 的字段,该字段是和字段C的串联。AB

这是我尝试过的:

from django.db.models import CharField, Value
from .models import DataTable

def Test(request):
    query = DataTable.objects.all().annotate(C=Value('A' + '-' + 'B', 
          output_field=CharField()))
    # the rest of the function...
Run Code Online (Sandbox Code Playgroud)

这里的问题是,C实际上每个返回行的字符串文字“A - B”。

A我想连接和字段的值B

python django concatenation django-queryset django-annotate

22
推荐指数
2
解决办法
2万
查看次数

get和dunder getitem之间的区别

我正在阅读Fluent Python并试图更深入地理解字典.

因此,当我运行以下内容时,结果很容易理解,get()和dunder getitem()都返回相同的结果

sample = {'a':1, 'b':2}
print(sample.__getitem__('a')) # 1
print(sample.get('a')) # 1
Run Code Online (Sandbox Code Playgroud)

当我用get()子类化dict时,我得到一个工作实例

class MyDict(dict):
    def __missing__(self, key):
        return 0

    def get(self, key):
        return self[key]

d = MyDict(sample)
print(d['a']) # 1
print(d['c']) # 0
Run Code Online (Sandbox Code Playgroud)

现在,如果我用dunder getitem()替换get(),我会收到一个错误,我不确定为什么.

class MyDict2(dict):
    def __missing__(self, key):
        return 0

    def __getitem__(self, key):
        return self[key]

d = MyDict2(sample)
print(d['a'])
print(d['c'])
Run Code Online (Sandbox Code Playgroud)

错误

RecursionError: maximum recursion depth exceeded while calling a Python object
Run Code Online (Sandbox Code Playgroud)

所以问题是,在这种情况下get和dunder getitem有什么区别,为什么会导致递归错误?

python python-3.x

8
推荐指数
2
解决办法
518
查看次数

Django 2 命名空间和 app_name

我很难理解 app_name 和命名空间之间的联系。

考虑项目级别的 urls.py

from django.urls import path, include

urlpatterns = [
    path('blog/', include('blog.urls', namespace='blog')),
]
Run Code Online (Sandbox Code Playgroud)

考虑应用级别(博客)urls.py

from django.urls import path
from . import views

app_name = 'blog'

urlpatterns = [
    path('', views.post_list, name='post_list'),
    path('<int:year>/<int:month>/<int:day>/<slug:post>/', views.post_detail, name='post_detail'),
]
Run Code Online (Sandbox Code Playgroud)

如果我注释掉 app_name,我会得到以下信息。

'Specifying a namespace in include() without providing an app_name '
django.core.exceptions.ImproperlyConfigured: Specifying a namespace in include() without providing an app_name is not supported. Set the app_name attribute in
 the included module, or pass a 2-tuple containing the list of …
Run Code Online (Sandbox Code Playgroud)

python django django-urls python-3.x

7
推荐指数
1
解决办法
5369
查看次数

Python阵列内存占用与列表

我正在翻阅Fluent Python这本书。它指出,对于所有数字的序列,数组比列表更有效,更快。从我收集到的信息来看,它还减少了内存开销。它指出:“ Python数组和C数组一样精简。”

我很好奇为什么这里的数组显示的内存比列表大。

import array
from random import random
import sys

floats = array.array('d', (random() for i in range(10**7)))
L = [random() for i in range(10**7)]
print(sys.getsizeof(floats))
print(sys.getsizeof(L))
Run Code Online (Sandbox Code Playgroud)

输出

81940352
81528056
Run Code Online (Sandbox Code Playgroud)

python arrays list data-structures python-internals

6
推荐指数
2
解决办法
681
查看次数

Bokeh GMapPlot段不渲染

以下代码适用于在谷歌地图图像上绘制圆圈.蓝色圆圈代表起源,红色圆圈代表目的地.数据来自csv文件,该文件导入到数据框中.数据包含10条路线的纬度/经度坐标.再次,我能够轻松地绘制代表位置的圆圈.但是,当我添加代码来绘制段(连接点的线)时,不会渲染任何内容.运行脚本时也没有报告错误,这使得诊断变得困难.我在代码中围绕与段相关的部分进行了注释.任何帮助,将不胜感激.

我使用的是Bokeh版本0.12.6和python 3.5

import pandas as pd
from bokeh.io import output_file, show
from bokeh.models import HoverTool, ResetTool, WheelZoomTool
from bokeh.models import GMapPlot, GMapOptions, ColumnDataSource, Circle, DataRange1d,PanTool, Segment


df = pd.read_csv('routes.csv', index_col='Lane')

map_options = GMapOptions(lat=40.29, lng=-97.73, map_type="roadmap", zoom=4)
plot = GMapPlot(x_range=DataRange1d(), y_range=DataRange1d(), map_options=map_options,plot_width=800, plot_height=700)
plot.title.text = "Top 10 Routes Over 500 miles"
plot.api_key = "MyKEY"

sourceO=ColumnDataSource(
    data=dict(
        lat=list(df.Originlat),
        lon=list(df.Originlng),
        desc=list(df.OriginCity)
    )
)

sourceD=ColumnDataSource(
    data=dict(
        lat=list(df.Destlat),
        lon=list(df.Destlng),
        desc=list(df.DestCity)
    )
)

#data for segments
sourceR=ColumnDataSource(
    data=dict(

        Originlat= list(df.Originlat),
        Originlng=list(df.Originlng),
        Destlat=list(df.Destlat),
        Destlng=list(df.Destlng),
        desc=list(df.index)
    ) …
Run Code Online (Sandbox Code Playgroud)

python data-visualization python-3.x bokeh

5
推荐指数
0
解决办法
184
查看次数

如何读取 xlsx 或 xls 文件作为火花数据帧

任何人都可以在不转换 xlsx 或 xls 文件的情况下让我知道我们如何将它们作为 spark 数据帧读取

我已经尝试用 Pandas 读取,然后尝试转换为 Spark 数据帧,但出现错误,错误是

错误:

Cannot merge type <class 'pyspark.sql.types.DoubleType'> and <class 'pyspark.sql.types.StringType'>
Run Code Online (Sandbox Code Playgroud)

代码:

import pandas
import os
df = pandas.read_excel('/dbfs/FileStore/tables/BSE.xlsx', sheet_name='Sheet1',inferSchema='')
sdf = spark.createDataFrame(df)
Run Code Online (Sandbox Code Playgroud)

azure python-3.x databricks

3
推荐指数
3
解决办法
3万
查看次数

散景在悬停中将数字转换为货币字符串

我正在使用 Python 3.6 和 Bokeh 0.13。

将鼠标悬停在条形图上时,我想将浮点数显示为货币字符串,其中没有小数,并且数字前面有货币符号。以下是我到目前为止的工具提示。

tooltip_net_rev = [("Net Revenue", "$@y{int}")]
Run Code Online (Sandbox Code Playgroud)

它呈现如下所示的字符串。除了逗号之外,这让我大部分时间都在那里。

Net Revenue: $128451
Run Code Online (Sandbox Code Playgroud)

这是我希望它看起来像逗号。

Net Revenue: $128,451
Run Code Online (Sandbox Code Playgroud)

任何有关工具提示格式的帮助将不胜感激。谢谢

python bokeh

1
推荐指数
1
解决办法
700
查看次数

建立唯一性后显示反应唯一键警告

所以我正在学习React.我在Django项目中使用React.我的第一个目标是列出Django博客API公开的博客标题.它首先获取数据,render方法使用map函数列出Blog标题.如下所示,我有一个使用每个博客的主键(pk)值的唯一键.这个数字本身就是Django模型所确定的.

./components/BlogShow.js

import React from 'react'

class BlogShow extends React.Component {
  constructor(props) {
    super(props);
    this.state = {
       error: null,
       isLoaded: false,
        blogs:null
    };
  }

  componentDidMount() {
    fetch("http://127.0.0.1:8000/blogs/")
      .then(res => {
          if (!res.ok) {
            throw Error(res.statusText);
        }
        else{
              return res.json()
          }
      })
      .then(
        (result) => {
          this.setState({
            isLoaded: true,
            blogs: result
          });
        },
        (error) => {
          this.setState({
            isLoaded: true,
            error
          });
        }
      )
  }

  render() {
    const { error, isLoaded, blogs } = this.state;
    if (error) {
      return <div>Error: {error.message}</div>;
    } …
Run Code Online (Sandbox Code Playgroud)

reactjs

0
推荐指数
1
解决办法
1663
查看次数

数组交集算法

我正在阅读《数据结构和算法常识指南》一书,在第 6 章/“实际示例”部分中有以下交集算法。

\n
    \xe2\x80\x8bfunction\xe2\x80\x8b intersection(firstArray, secondArray){\n\xe2\x80\x8b       \xe2\x80\x8blet\xe2\x80\x8b result = [];\n\xe2\x80\x8b   \n\xe2\x80\x8b       \xe2\x80\x8bfor\xe2\x80\x8b (\xe2\x80\x8blet\xe2\x80\x8b i = 0; i < firstArray.length; i++) {\n\xe2\x80\x8b           \xe2\x80\x8bfor\xe2\x80\x8b (\xe2\x80\x8blet\xe2\x80\x8b j = 0; j < secondArray.length; j++) {\n\xe2\x80\x8b               \xe2\x80\x8bif\xe2\x80\x8b (firstArray[i] == secondArray[j]) {\n\xe2\x80\x8b                   result.push(firstArray[i]);\n\xe2\x80\x8b                   \xe2\x80\x8bbreak\xe2\x80\x8b;\n\xe2\x80\x8b               }\n\xe2\x80\x8b           }\n\xe2\x80\x8b       }\n\xe2\x80\x8b       \xe2\x80\x8breturn\xe2\x80\x8b result;\n\xe2\x80\x8b   }\n
Run Code Online (Sandbox Code Playgroud)\n

它指出,在最好的情况下(相同的数组),firstArray[i] == secondArray[j]由于存在break语句,因此只有N次比较。如果没有break语句,它将是N^2。

\n

但我发现,即使使用break语句和相同的数组,仍然必须进行N次以上的比较,因为随着i变大,内部循环的迭代次数会越来越多。但由于这是一本受欢迎的书,我想我一定是错的,我在这里发帖是为了验证这一点并解释为什么我错了。

\n

algorithm

0
推荐指数
1
解决办法
61
查看次数