所以我有一些相当大的json编码文件.最小的是300MB,但这是迄今为止最小的.其余的是多GB,大约2GB到10GB +.
所以当我尝试使用Python加载文件时,我似乎耗尽了内存.我目前正在进行一些测试,看看处理这些东西需要多长时间才能看到从这里开始.这是我用来测试的代码:
from datetime import datetime
import json
print datetime.now()
f = open('file.json', 'r')
json.load(f)
f.close()
print datetime.now()
Run Code Online (Sandbox Code Playgroud)
毫不奇怪,Python给了我一个MemoryError.似乎json.load()调用json.loads(f.read()),它试图首先将整个文件转储到内存中,这显然不会起作用.
我能干什么方式解决这个问题吗?
我知道这是旧的,但我不认为这是重复的.答案是一样的,但问题是不同的.在"重复"中,问题是如何有效地读取大文件,而这个问题处理甚至根本不适合内存的文件.效率不是必需的.
自学Go我正在构建一个简单的服务器,它接受一些输入,进行一些处理,并将输出发送回客户端(包括原始输入).
输入的长度可以从大约5到13个字符+结束线以及客户端发送的其他任何guff.
输入被读入字节数组,然后转换为字符串进行某些处理.另一个字符串被附加到此字符串,整个事物被转换回字节数组以发送回客户端.
问题是输入用一堆NUL字符填充,我不知道如何摆脱它们.
所以我可以循环遍历数组,当我找到一个空字符时,记下长度(n),创建一个新长度的字节数组,并将前n个字符复制到新的字节数组并使用它.这是最好的方式,还是有什么东西让我更容易?
一些剥离代码:
data := make([]byte, 16)
c.Read(data)
s := strings.Replace(string(data[:]), "an", "", -1)
s = strings.Replace(s, "\r", "", -1)
s += "some other string"
response := []byte(s)
c.Write(response)
c.close()
Run Code Online (Sandbox Code Playgroud)
此外,如果我在这里做任何其他明显愚蠢的事情,那将很高兴知道.
我有一些自定义类型.它们基本上都是枚举.以下是它们的示例:
CREATE TYPE card_suit AS ENUM
('spades',
'clubs',
'hearts',
'diamonds');
Run Code Online (Sandbox Code Playgroud)
我在Java中有一些准备好的语句,看起来像这样:
// Setup stuff up here.
sql = "INSERT INTO foo (suit) VALUES (?)";
st.setString(1, 'spades');
st.executeUpdate(sql);
Run Code Online (Sandbox Code Playgroud)
而Java给了我一些令人讨厌的例外:
org.postgresql.util.PSQLException: ERROR: column "suit" is of type card_suit but expression is of type character varying
Hint: You will need to rewrite or cast the expression.
Run Code Online (Sandbox Code Playgroud)
他们很高兴给我一个提示,但我不确定如何遵循它.
我正在尝试在Python中创建一个函数,它接受树的任意节点,并根据节点给出填充列表列表.
鉴于以下绘制得很糟糕的树:

如果我们从例如节点5开始,我们应该得到:
节点应最终列在列表列表中,每个深度列表一个列表.
python中的节点:
nodes = [
{'id': 1, 'parent': None},
{'id': 2, 'parent': 1},
{'id': 3, 'parent': 1},
{'id': 4, 'parent': 2},
{'id': 5, 'parent': 2},
{'id': 6, 'parent': 5},
{'id': 7, 'parent': 6},
{'id': 8, 'parent': 3}
]
Run Code Online (Sandbox Code Playgroud)
我们只能看到父母,而不是孩子,但遗憾的是,这是我必须使用的数据格式.
因此,如果我们采用节点5,我们希望得到一个类似于此的节点列表:
nl = [
[{'id': 6, 'parent': 5}],
[{'id': 4, 'parent': 2}, {'id': 5, 'parent': 2}],
[{'id': 2, 'parent': 1}, {'id': 3, 'parent': 1}],
]
Run Code Online (Sandbox Code Playgroud)
这是我到目前为止的代码.我认为递归函数可能是最简单的方法.不幸的是,它似乎没有像我认为应该做的那样,显然我做的事情非常错误.而且这段代码甚至不考虑根据我不完全确定如何处理的子节点,除了可能更容易处理之后.
node_list = []
def pop_list(nodes=None, parent=None, node_list=None):
if parent …Run Code Online (Sandbox Code Playgroud) 我觉得答案可能与此重复:杰克逊 - Json到POJO有多个条目,但我认为这个问题可能不同.我也使用原始数据绑定而不是完整数据绑定.
所以就像那个问题的提问者一样,我在文件中有多个对象,我正在尝试将它们变成POJO并将它们填充到我的设计数据库中,这样我就可以快速而不是慢慢地访问数据.
这里的文件大小为几十GB,每个文件中有多达数百万个对象.无论如何这里是我到目前为止:
ObjectMapper mapper = new ObjectMapper();
Map<String,Object> data = mapper.readValue(new File("foo.json"), Map.class);
System.out.println(data.get("bar"));
Run Code Online (Sandbox Code Playgroud)
这对于在foo中打印第一个对象的bar元素非常有用,但是我需要一种方法来迭代每个元素,这样就不会占用我所有的记忆.
谢谢.
我有一个带有一些双打的PostgreSQL表,它们存储了%.所以我们说列是:
pc_1
pc_2
Run Code Online (Sandbox Code Playgroud)
我想要的是按这两列中的哪一列具有最高下降量,然后由另一列下降,再次下降.
所以,如果我们的数据是,请说:
id pc_1 pc_2
1 12.5 11.0
2 10.0 13.2
3 13.2 9.0
Run Code Online (Sandbox Code Playgroud)
选择*来自mytable order by <something>将给出:
2 10.0 13.2
3 13.2 9.0
1 12.5 11.0
Run Code Online (Sandbox Code Playgroud) 我正在尝试使其正常工作,但不知道这是否可行。它应该这样做。
我开发使用一个Web应用程序Django+ Rest-Framework+ jQuery,我想有一个外部应用程序使用相同的RESTAPI,使用JWT Tokens进行身份验证。
我现在的配置是这样的。
设置.py
REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': [
'rest_framework.authentication.SessionAuthentication',
'rest_framework_simplejwt.authentication.JWTAuthentication',
],
'DEFAULT_RENDERER_CLASS': [
'rest_framework.renderers.JSONRenderer',
]
}
SIMPLE_JWT = {
'AUTH_HEADER_TYPES': ('Bearer',),
}
Run Code Online (Sandbox Code Playgroud)
视图.py
class ListFileView(APIView):
permission_classes = (IsAuthenticated,)
def get(self, request, *args, **kwargs):
user = request.user
if user:
obj = Foo.objects.filter(owner=user)
serializer = FooSerializer(obj, many=True)
data = serializer.data
return Response(data, status=status.HTTP_200_OK)
return Response({'detail': 'You have no access to files.'}, status=status.HTTP_400_BAD_REQUEST)
Run Code Online (Sandbox Code Playgroud)
棘手的部分是,当我使用:
permission_classes = (IsAuthenticated,)
Run Code Online (Sandbox Code Playgroud)
我可以ajax从外部应用程序(使用有效JWT …
python django django-rest-framework django-rest-framework-simplejwt
我有一种感觉,我认为这一切都错了.但无论如何.
我有一个sql数据库,它本质上是一个有目的的非规范化表,我已经构建了使这个任务更容易,所以我可以从一个表中获取东西.
我所拥有的是一对成对的表,如下所示:
user_lo | user_hi | something_else | other stuff
1000 | 1234 | 1231251654 | 123
1050 | 1100 | 1564654 | 45648
1080 | 1234 | 456444894648 | 1
Run Code Online (Sandbox Code Playgroud)
等等.
所以对于我的neo4j图形数据库,我希望每个用户id都作为一个节点,其他的东西不是太重要,但基本上是关系中的东西.
我只想为每个用户创建一个节点,所以我的感觉是,如果我做这样的事情:
while (rs.next()) {
node_lo = db.createNode();
node_lo.setProperty("user_id", rs.getInt(1));
node_hi = db.createNode();
node_hi.setProperty("user_id", rs.getInt(2));
}
Run Code Online (Sandbox Code Playgroud)
当我们与USER_ID 1234添加节点第二次,它只是创造一个新的节点,但我什么,我想要的是它只是抓住,而不是创造,所以我可以将它添加到关系到1080这个节点这个案例.
那么这样做的方法是什么?
我会开始说这不是一个重复的问题。我的问题与 Django 2.2 的 url 有点不同。
当将 HttpResponseRedirect 返回到同一应用程序中的另一个视图时,视图触发“str”对象不是映射错误。
我真的不知道出了什么问题。我在同一项目的其他应用程序中使用相同的方法并且它有效。
项目网址.py
urlpatterns = [
url(r'^$', Home.as_view()),
path('dashboard/', include('dashboard.urls')),
path('main/', include('main.urls'))
]
Run Code Online (Sandbox Code Playgroud)
应用程序 url.py
urlpatterns = [
path('', views.Section.as_view(), name='main-form')
]
Run Code Online (Sandbox Code Playgroud)
应用程序视图.py
class Home(View):
def get(self, request):
return render(request, 'index.html', context={})
def post(self, request):
return HttpResponseRedirect(reverse('main-form'))
class Section(View):
def get(self, request):
return HttpResponse("Test Ok")
Run Code Online (Sandbox Code Playgroud)
在发布主页表单后,它应该重定向到主表单视图(剖面视图类),但我收到错误。
如果我在模板 url 中使用 url,它会触发相同的错误{% url 'main-form' %}
如果我手动导航从地址栏查看,视图呈现良好。
怎么了?
我正在尝试将我的用户模型更改为自定义模型。我不介意删除我的数据库并只使用一个新数据库,但是当我尝试运行 makemigrations 时,我收到此错误
bookings.Session.session_client: (fields.E301) Field defines a relation with the model 'auth.User', which has been swapped out.
HINT: Update the relation to point at 'settings.AUTH_USER_MODEL'.
Run Code Online (Sandbox Code Playgroud)
预订/views.py
from django.shortcuts import render, get_object_or_404
from django.http import HttpResponse, HttpResponseRedirect
from bookings.models import Session
from django.contrib.auth.decorators import login_required
from django.contrib.auth.models import User
# Create your views here.
def book(request, Session_id):
lesson = get_object_or_404(Session, pk=Session_id)
try:
client = request.user.id
except (KeyError, Choice.DoesNotExist):
return render(request, 'booking/details.html', {
'lesson': lesson,
'error_message': "You need to login first", …Run Code Online (Sandbox Code Playgroud) python ×4
django ×3
java ×3
json ×2
postgresql ×2
sql ×2
django-rest-framework-simplejwt ×1
django-urls ×1
django-views ×1
go ×1
jackson ×1
neo4j ×1
recursion ×1
tree ×1