Size: a a a

2020 January 09

DS

David Shiko in SPb Python
Stanislav
Технически-то как бы можно, если ты модифицируешь объект в переменной (соответственно, это должен быть изменяемый, mutable, тип):
class Foo():
   foo = None

   def __init__(self, foo):
       self.foo = foo

   def __repr__(self):
       return f'{self.foo}'


l = [1, 2, Foo('foo')]

print(l)  # [1, 2, foo]

a = l[-1]
a.foo = 'new'

print(l)  # [1, 2, new]


Но идея все еще "пахнет".
Все проще, мне подкинули идею, правда поздновато, я уже все на индексах сделал)

In [18]: x = []                                                                                                                                              

In [
19]: l = [1, 2, x]                                                                                                                                        

In [
20]: l                                                                                                                                                    
Out[
20]: [1, 2, []]

In [
21]: x.append(2)                                                                                                                                          

In [
22]: l                                                                                                                                                    
Out[
22]: [1, 2, [2]]
источник

S

Stanislav in SPb Python
David Shiko
Все проще, мне подкинули идею, правда поздновато, я уже все на индексах сделал)

In [18]: x = []                                                                                                                                              

In [
19]: l = [1, 2, x]                                                                                                                                        

In [
20]: l                                                                                                                                                    
Out[
20]: [1, 2, []]

In [
21]: x.append(2)                                                                                                                                          

In [
22]: l                                                                                                                                                    
Out[
22]: [1, 2, [2]]
Ой вэй
источник
2020 January 10

KM

Kristina Mironova in SPb Python
Stanislav
Привет! А ты не устанавливала, случаем, отдельно bson? (pip install bson)

Если да, то с pymongo не надо так. Код у тебя правильный.
Да,  устанавливала. После этого pymongo перестал работать вообще,  пришлось удалить и установить его заново.
источник

SO

Simon Osipov in SPb Python
David Shiko
Все проще, мне подкинули идею, правда поздновато, я уже все на индексах сделал)

In [18]: x = []                                                                                                                                              

In [
19]: l = [1, 2, x]                                                                                                                                        

In [
20]: l                                                                                                                                                    
Out[
20]: [1, 2, []]

In [
21]: x.append(2)                                                                                                                                          

In [
22]: l                                                                                                                                                    
Out[
22]: [1, 2, [2]]
Только у тебя получился вложенный список, а не то, что хотел выше (одномерный)
источник

S

Stanislav in SPb Python
Kristina Mironova
Да,  устанавливала. После этого pymongo перестал работать вообще,  пришлось удалить и установить его заново.
Надо только pymongo, он с собой подходящий bson принесет.
источник

KM

Kristina Mironova in SPb Python
Stanislav
Надо только pymongo, он с собой подходящий bson принесет.
Спасибо,  это уже поняла.  Однако код не работает.  А конкретно если пытаюсь использовать класс ObjectID он делает вид что такого нет.
источник

S

Stanislav in SPb Python
Kristina Mironova
Спасибо,  это уже поняла.  Однако код не работает.  А конкретно если пытаюсь использовать класс ObjectID он делает вид что такого нет.
А точно затерла тот неподходящий bson?
источник

S

Stanislav in SPb Python
Этот текст ошибки как раз из той ситуации потому что, насколько я понял по беглому поиску.
источник

S

Stanislav in SPb Python
Когда ставишь еще bson.
источник

KM

Kristina Mironova in SPb Python
Stanislav
А точно затерла тот неподходящий bson?
Сначала я пробовала без него,  потом с ним.
Да,  когда удалила bson и переустановила pymongo,  то ошибка импорта ушла.  Но и к ObjectID не обратиться.
источник

S

Stanislav in SPb Python
Kristina Mironova
Сначала я пробовала без него,  потом с ним.
Да,  когда удалила bson и переустановила pymongo,  то ошибка импорта ушла.  Но и к ObjectID не обратиться.
Правильно понимаю, что сейчас вот такой минимальный код дает ту же ошибку?
from bson.objectid import ObjectId
ObjectId('50b3bda58a02fb9a84d8991e')


Если да, то явно дело в инсталляции.
источник

S

Stanislav in SPb Python
Kristina Mironova
Сначала я пробовала без него,  потом с ним.
Да,  когда удалила bson и переустановила pymongo,  то ошибка импорта ушла.  Но и к ObjectID не обратиться.
Если ушла, то что значит "к ObjectID не обратиться"?
источник

KM

Kristina Mironova in SPb Python
Stanislav
Если ушла, то что значит "к ObjectID не обратиться"?
Сейчас у меня только import pymongo.
Такой класс ObjectID() недоступен.
источник

S

Stanislav in SPb Python
Kristina Mironova
Сейчас у меня только import pymongo.
Такой класс ObjectID() недоступен.
Ну все равно надо from bson.objectid import ObjectId
источник

S

Stanislav in SPb Python
и будет доступен (только Id не капсом)
источник

S

Stanislav in SPb Python
Оно с собой притаскивает bson
источник

KM

Kristina Mironova in SPb Python
Stanislav
Ну все равно надо from bson.objectid import ObjectId
Ок,  спасибо,  завтра попробую.
источник

S

Stanislav in SPb Python
Kristina Mironova
Ок,  спасибо,  завтра попробую.
Удачи, рассказывай потом, чем кончится :)
источник

KM

Kristina Mironova in SPb Python
Stanislav
Удачи, рассказывай потом, чем кончится :)
import pymongo
from bson.objectid import ObjectId
data = list(collection.find(ObjectId('5e173e1721ffc75aba5faa0a')))

raise TypeError("%s must be an instance of dict, bson.son.SON, or "
TypeError: filter must be an instance of dict, bson.son.SON, or any other type that inherits from collections.Mapping

Что не так?
источник

S

Stanislav in SPb Python
Kristina Mironova
import pymongo
from bson.objectid import ObjectId
data = list(collection.find(ObjectId('5e173e1721ffc75aba5faa0a')))

raise TypeError("%s must be an instance of dict, bson.son.SON, or "
TypeError: filter must be an instance of dict, bson.son.SON, or any other type that inherits from collections.Mapping

Что не так?
https://pymongo.readthedocs.io/en/stable/tutorial.html#querying-by-objectid

Полагаю, что передавать надо {"_id": ObjectId(...)}, а не ObjectId
источник