python-mongodbððððð
mongodbiã§inhazä±rladä±ä±m notlar ..
Kaynak
rdms | nosql |
---|---|
垂直可以使用,很难水平工作。 | 可以以某种方式水平或垂直训练Koaly。 |
还要恢复数据一致性。 | 提供最终数据一致性。 |
成熟度是yã¼ksek。找到专家很容易。 | RDMS并不那么成熟。很难找到专家。 |
lisansâ¼Cretleriyã¼ksek。 | lisansâ¼cretleridã¼k。 |
吉里奥
mongoDB,postgresql -mySQL,例如相关数据库,例如NOSQL数据库作为数据库作为数据库。
nosql -mongodb nedir?
nosql
- rdms de 表和sã¼titunlar保持关系 nosql de json 以这种格式保持。 问题pugis问题,&uckelesötubé£dæt£pæpæpæpæpæpápad)mumb)
- bair任何事物,verialanä±ndanosqlâ§okfazlaKullanä±lmaktadä±r。 mongoDB
- aã§ä±k kaynak kodlu。
- nosql veritabanä±。
- 每个记录都是dã¶kã¼man,并以Json的格式保存。
nosqlveritabanä±ãZellikleri
NOSQL数据库;灵活,高性能,âok功能以及需要发布数据库的数据库。
-
灵活的r。已构建的解雇或半结构数据的NOSQL数据库。
- - eklenebilir :nosql,daää±tä±lmä±Ådonanä±mkâmKémeleriKoulleriKulleriKullanä±larak±larakâlinâ¶ltountun§egeni了ä±ndan,pahalä±veKalä±cä±sunucularä±nkullanä±mzorunluluäunuortadankaldä±rä±r。
- 具有高性能:通过特定数据模型和访问模式进行了优化的NOSQL数据库,比与其关系数据库保持相似功能的性能更长。
- 具有高ä°ÅLevselliä:数据库具有工作比例。
- 易于胶化具有简单的运输:NOSQL数据库数据可以轻松地在磁盘或存储卡中运输。
- 易于定义Easers Streetstrong>。数据可以存储在NOSQL数据库中,而这些数据库无需通过使其必要来识别。
nosqlveritabanä±tã¼rleri
文档数据库:文档数据库使用了应用程序代码中使用的相同文档模型,并且促进了数据库中的数据存储,并促进了询问过程。
。-
图形数据库< /strong>。数据库,社交基础架构,基础架构基础架构,循环过程,对感知的感知和信息图形在许多领域使用。 /li>>
键deäer:可以以高速率卡住的钥匙并能够达到其他数据库消耗。 。
搜索:其中一种应用程序,即开发人员的权威,以帮助开发人员的问题提供帮助。 NOSQL添加并累积了已建立并积累膝盖并搜索由机器组成的数据的协作和站点,并通过搜索它们。它可以扣除和分析。
记忆记忆ä°ââ€â€â°Cstrong>。以及由于应用程序是相同的方式,因此有必要以相同的方式行动的事实必须在任何时候进行,没有任何问题。
BAILDLANGä§-安装
让我们下载我们的Pymongo库与Python制作Mongodb Ba'a。
Windows:
pip install pymongo
linox -macos
pip3 install pymongo
Mongodb Yi Lodge或该国的云中可以看到云。512MB的爵士乐受益于无法达到的合作伙伴。如果要在旅馆中使用它,则可以下载buradan。
如果您要在EGE云中使用它,我们将完成E -Mail的确认链接。
群集OluåTurma
- 前往Atlas,成为一个好人,如果您已经成为一个好人,就可以登录。
- âto be and the Input之后,在bouild bouild a数据库按钮下的“簇”选项卡下。 ***
- ââââââââââââââââââââââââââââââââââââââââââââââ劳ââââ型地区的âââââ型地区...ââââ劳教an。in - ***
- 您可以将群集存储在Amazon AWS,Google或Azure Cloud保存中。作为地区,法兰克福对我们选择法兰克福可能是直接枢纽的事实可能很有用。
- 进行选择后,可以单击“创建群集”按钮。 ***
- 我们输入我们的信息以创建使用。然后,我们说创建用户并将其添加到列表中。 ***
- 云环境选择和IP地址等于输入IP地址并添加到升中。
BaäLantä±
-
-
-
我们选择python,然后我们将使用它。我们可以复制代码并将其制成我们的Python代码。我不应该忘记使用用来添加到较短的密码更改。
artä±keitã¶rã¼zegeã§ebiliriz。
import pymongo
from pymongo import MongoClient #MongoClient sınıfımızı import ediyoruz.
作为Mongoclient的参数,将网站指定为参数,我们以Myclient的名义为您提供开始的开始,并形成一个对象。
myclient = MongoClient("mongodb+srv://erkamesen:<yourpassword>@cluster1.dumyfbl.mongodb.net/?retryWrites=true&w=majority") #python ile bağlama
使用myclient [“数据库名称”],我们在群集中创建数据库,并以DB的名义丢弃了各种tick。
通过使用DB [“ CollectionAd”]创建一个集合,我们一直在以New_collection的名义进行更改,并以收藏的成功形成。
db = myclient["veritabanıAdı"] #Veritabanı oluşturma
new_collection = db["collectionAdı"] #collection oluşturma veya bağlanma
插入(数据添加)查询
insert_one()
在注册中,即,在mongodb中,我们使用insert_one()方法将行添加到颜色上,并带有许多。
insert_one()该方法的第一个参数是一个过程,该过程使您要添加的文档中每个字段的名称和值。
myclient = MongoClient("mongodb+srv://erkamesen:<yourpassword>@cluster1.dumyfbl.mongodb.net/?retryWrites=true&w=majority") #python ile bağlama
db = myclient["mydatabase"] #Veritabanı oluşturma
new_collection = db["customers"] #collection oluşturma veya bağlanma
---
new_data = {"name":"Erkam","City":"Karabük"}
x = new_collection.insert_one(new_data)
insert_id
print(x.inserted_id)
Result : 63d79461665fd3f1737213b1
insert_many()
Mongodb a中的一个集合突然添加了â§okdã¶Kã¼man以使用insert_many()方法。
insert_many()该方法的第一个参数是输入要添加的数据的列表:
mylist = [
{ "name": "Amy", "address": "Apple st 652"},
{ "name": "Hannah", "address": "Mountain 21"},
{ "name": "Michael", "address": "Valley 345"},
{ "name": "Sandy", "address": "Ocean blvd 2"},
{ "name": "Betty", "address": "Green Grass 1"},
{ "name": "Richard", "address": "Sky st 331"},
{ "name": "Susan", "address": "One way 98"},
{ "name": "Vicky", "address": "Yellow Garden 2"},
{ "name": "Ben", "address": "Park Lane 38"},
{ "name": "William", "address": "Central st 954"},
{ "name": "Chuck", "address": "Main Road 989"},
{ "name": "Viola", "address": "Sideway 1633"}
]
new_collection.insert_many(mylist)
如果我们想在这里为每一行提供一个自动唯一ID,我们可以自己指定。
# ID ye göre ekleme yapma
new_list_with_id = [
{"_id":1, "name": "Erkam", "address": "Karabük"},
{"_id":2, "name": "Ensar", "address": "İstanbul"},
{"_id":3, "name": "Duygu", "address": "Ankara"},
{"_id":4, "name": "Enes", "address": "İstanbul"},
{"_id":5, "name": "Ulaş", "address": "Sakarya"},
{"_id":6, "name": "Onur", "address": "Isparta"},
{"_id":7, "name": "Çelik", "address": "Bolu"},
]
new_collection.insert_many(new_list_with_id)
查找(数据查找)查询
要在MongoDB中的集合中找到数据,而不是SQL SELECT,而不是SELECT Expression MongoDB也find()和find_one()方法使用方法。
找一个()
我们可以使用Find_one()方法从MongoDB中的集合中选择数据。这将为我们提供第一次销售的记录。
x = new_collection.find_one()
print(x)
# {'_id': ObjectId('63d79904c5c7052da8b7bc6e'), 'name': 'Amy', 'address': 'Apple st 652'}
寻找()
find()yã¶ntemi,seã§imdekiTã¼mkayä±tlarä±bizedãtãn¼rã¼r。
Find()方法的第一个参数是查询对象。通过这种方式,我们使用了一个损坏的查询对象,该对象似乎是通过不给出参数而在集合中的所有记录。在SQL中将select命令的find()方法的参数放在。
for x in new_collection.find():
print(x)
"""
{'_id': ObjectId('63d79904c5c7052da8b7bc6e'), 'name': 'Amy', 'address': 'Apple st 652'}
{'_id': ObjectId('63d79904c5c7052da8b7bc6f'), 'name': 'Hannah', 'address': 'Mountain 21'}
{'_id': ObjectId('63d79904c5c7052da8b7bc70'), 'name': 'Michael', 'address': 'Valley 345'}
{'_id': ObjectId('63d79904c5c7052da8b7bc71'), 'name': 'Sandy', 'address': 'Ocean blvd 2'}
{'_id': ObjectId('63d79904c5c7052da8b7bc72'), 'name': 'Betty', 'address': 'Green Grass 1'}
{'_id': ObjectId('63d79904c5c7052da8b7bc73'), 'name': 'Richard', 'address': 'Sky st 331'}
{'_id': ObjectId('63d79904c5c7052da8b7bc74'), 'name': 'Susan', 'address': 'One way 98'}
{'_id': ObjectId('63d79904c5c7052da8b7bc75'), 'name': 'Vicky', 'address': 'Yellow Garden 2'}
{'_id': ObjectId('63d79904c5c7052da8b7bc76'), 'name': 'Ben', 'address': 'Park Lane 38'}
{'_id': ObjectId('63d79904c5c7052da8b7bc77'), 'name': 'William', 'address': 'Central st 954'}
{'_id': ObjectId('63d79904c5c7052da8b7bc78'), 'name': 'Chuck', 'address': 'Main Road 989'}
{'_id': ObjectId('63d79904c5c7052da8b7bc79'), 'name': 'Viola', 'address': 'Sideway 1633'}
{'_id': 1, 'name': 'Erkam', 'address': 'Karabük'}
{'_id': 2, 'name': 'Ensar', 'address': 'İstanbul'}
{'_id': 3, 'name': 'Duygu', 'address': 'Ankara'}
{'_id': 4, 'name': 'Enes', 'address': 'İstanbul'}
{'_id': 5, 'name': 'Ulaş', 'address': 'Sakarya'}
{'_id': 6, 'name': 'Onur', 'address': 'Isparta'}
{'_id': 7, 'name': 'Çelik', 'address': 'Bolu'}"""
某些带有Find()ã面包的数据
find()方法的第二个参数是一个对象,该对象将在结果中包含哪些区域。
如果需要此参数,则所有区域的所有区域都包含在结论中。
# id yi getirme ismi ve adresi getir
for x in new_collection.find({},{ "_id": 0, "name": 1, "address":1}):
print(x)
"""
{'name': 'Amy', 'address': 'Apple st 652'}
{'name': 'Hannah', 'address': 'Mountain 21'}
{'name': 'Michael', 'address': 'Valley 345'}
{'name': 'Sandy', 'address': 'Ocean blvd 2'}
{'name': 'Betty', 'address': 'Green Grass 1'}
"""
# Sadece isimleri getir
for x in new_collection.find({},{ "_id": 0, "name": 1}):
print(x)
"""
# Sadece isimleri getir
for x in new_collection.find({},{ "_id": 0, "name": 1}):
print(x)
# Sadece isimleri getir
for x in new_collection.find({},{ "_id": 0, "name": 1}):
print(x)
{'name': 'Amy'}
{'name': 'Hannah'}
{'name': 'Michael'}
{'name': 'Sandy'}
{'name': 'Betty'}
"""
查询(FILTRELEME)SORGULARä±
在集合中查找文档时,您可以使用查询对象过滤结果。
find()是该方法的首选是多种审讯对象,用于被称为。
myquery = { "address": "İstanbul" }
mydoc = new_collection.find(myquery)
for x in mydoc:
print(x)
"""
{'_id': 2, 'name': 'Ensar', 'address': 'İstanbul'}
{'_id': 4, 'name': 'Enes', 'address': 'İstanbul'}
"""
高级查询
集合aã§alä是一个集合,将等级平均保留以进行更详细的查询。
让我们在列表中的列表中获取笔记
mydb = db["notlar"]
notlar = [{"Adı":"Ali","Ortalama":63},
{"Adı":"Ayşe","Ortalama":82},
{"Adı":"Mehmet","Ortalama":18},
{"Adı":"Duygu","Ortalama":41},
{"Adı":"Buse","Ortalama":72},
{"Adı":"Orhan","Ortalama":26},
{"Adı":"Kerim","Ortalama":65},
{"Adı":"Mustafa","Ortalama":23},
{"Adı":"Şule","Ortalama":75},
{"Adı":"Baran","Ortalama":91},
{"Adı":"Kaan","Ortalama":74},
{"Adı":"Osman","Ortalama":62},
{"Adı":"Banu","Ortalama":84},
{"Adı":"Burhan","Ortalama":36},
{"Adı":"Oğuz","Ortalama":63},
{"Adı":"Ali","Ortalama":75}
]
mydb.insert_many(notlar)
# <pymongo.results.InsertManyResult at 0x7f23655cff10>
Å现在50和€Zer注释是基于课程的,因此让我们添加到我的代码中。
$gt = greater than ">"
$gte = greater than equal ">="
$lt = less than "<"
$lte = less than equal "<="
$ne = not equal "!="
$in = Karşısına gelen liste içindeki value ları getirir { field: { $in: [<value1>, <value2>, ... <valueN> ] } }
$nin = Karşısına gelen liste içindeki value lar haricini getirir { field: { $nin: [<value1>, <value2>, ... <valueN> ] } }
课程政府去:
for x in mydb.find({"Ortalama": { "$gte": 50 }},{"_id":0, "Adı":1}):
print(x)
"""
{'Adı': 'Ali'}
{'Adı': 'Ayşe'}
{'Adı': 'Buse'}
{'Adı': 'Kerim'}
{'Adı': 'Şule'}
{'Adı': 'Baran'}
{'Adı': 'Kaan'}
{'Adı': 'Osman'}
{'Adı': 'Banu'}
"""
课程的遗迹和注释
for x in mydb.find({"Ortalama": { "$lt": 50 }},{"_id":0}):
print(x)
"""
{'Adı': 'Mehmet', 'Ortalama': 18}
{'Adı': 'Duygu', 'Ortalama': 41}
{'Adı': 'Orhan', 'Ortalama': 26}
{'Adı': 'Mustafa', 'Ortalama': 23}
{'Adı': 'Burhan', 'Ortalama': 36}
"""
排序(说)查询
我们使用该方法来增加或减少方式()。
sort()yãnntemi是“ fieldname”的参数和参数(假设假设yã¶n,假设假设)。
sort("name", 1) #ascending ( Artan Yön )
sort("name", -1) #descending ( Azalan Yön )
平均值增加了
# Ortalamalar için ARTAN YÖN
for x in mydb.find({},{"_id":0}).sort("Ortalama"):
print(x)
"""
{'Adı': 'Mehmet', 'Ortalama': 18}
{'Adı': 'Mustafa', 'Ortalama': 23}
{'Adı': 'Orhan', 'Ortalama': 26}
{'Adı': 'Burhan', 'Ortalama': 36}
{'Adı': 'Duygu', 'Ortalama': 41}
{'Adı': 'Osman', 'Ortalama': 62}
{'Adı': 'Ali', 'Ortalama': 63}
{'Adı': 'Kerim', 'Ortalama': 65}
{'Adı': 'Buse', 'Ortalama': 72}
{'Adı': 'Kaan', 'Ortalama': 74}
{'Adı': 'Şule', 'Ortalama': 75}
{'Adı': 'Ayşe', 'Ortalama': 82}
{'Adı': 'Banu', 'Ortalama': 84}
{'Adı': 'Baran', 'Ortalama': 91}
"""
平均值降低的平均值
for x in mydb.find({},{"_id":0}).sort("Ortalama", -1):
print(x)
"""
{'Adı': 'Baran', 'Ortalama': 91}
{'Adı': 'Banu', 'Ortalama': 84}
{'Adı': 'Ayşe', 'Ortalama': 82}
{'Adı': 'Şule', 'Ortalama': 75}
{'Adı': 'Kaan', 'Ortalama': 74}
{'Adı': 'Buse', 'Ortalama': 72}
{'Adı': 'Kerim', 'Ortalama': 65}
{'Adı': 'Ali', 'Ortalama': 63}
{'Adı': 'Osman', 'Ortalama': 62}
{'Adı': 'Duygu', 'Ortalama': 41}
{'Adı': 'Burhan', 'Ortalama': 36}
{'Adı': 'Orhan', 'Ortalama': 26}
{'Adı': 'Mustafa', 'Ortalama': 23}
{'Adı': 'Mehmet', 'Ortalama': 18}
"""
和 - 或sorgularä±
and: find({$and:[{sorgu1:beklenen1},{sorgu2:beklenen2}]})
or: find({$or:[{sorgu1:beklenen1},{sorgu2:beklenen2}]})
和
它表明列表中的查询还可以。
平均63个
for x in mydb.find({"Ortalama":63},{"_id":0}):
print(x)
"""
{'Adı': 'Ali', 'Ortalama': 63}
{'Adı': 'Oğuz', 'Ortalama': 63}
"""
平均63,名称alä°带来
for x in mydb.find({"$and":[{"Ortalama":63},{"Adı":"Ali"}]},{"_id":0}):
print(x)
# {'Adı': 'Ali', 'Ortalama': 63}
或者
将列表中的所有查询都带入。
带来平均63或以
命名的人
for x in mydb.find({"$or":[{"Ortalama":63},{"Adı":"Ali"}]},{"_id":0}):
print(x)
"""
{'Adı': 'Ali', 'Ortalama': 63}
{'Adı': 'Oğuz', 'Ortalama': 63}
{'Adı': 'Ali', 'Ortalama': 75}
"""
更新(gã¼ncelleme)sorgularä±
update_one()
您可以使用update_one()方法查找记录或mongodb表达式。
update_one()方法的第一个参数是一个查询对象,定义将看到哪些文档。
第二个参数是定义文档的新值的对象。
注意:如果查询找到多个记录,则只能仅创建第一个记录。
my_query = {“ oldkayä±t”:“旧值”}
new_values = {“ $ set”:{“ oldkayä±t”:“ new value”}}}
update_one(my_query,new_values)
# Banu Ortalama 84 geldi. şimdi bunun notunu 100 ile güncelleyelim.
my_query = {"Ortalama":84}
new_values = {"$set":{"Ortalama":100}}
mydb.update_one(my_query, new_values)
# 100 olarak değiştirdik kontrol edelim
mydb.find_one({"Ortalama":100})
update_many()
应用程序与应用程序中的update_one()没有什么不同。
sorgununkoåUllarä±nä±karåä±layantã¼mmanlarä±gã¼ncelleemekioution_many()
大赦!任何平均小于50的人,
my_query = {"Ortalama":{"$lt":50}}
new_values = {"$set":{"Ortalama":50}}
mydb.update_many(my_query, new_values)
for x in mydb.find({},{"_id":0}):
print(x)
"""
{'Adı': 'Ali', 'Ortalama': 63}
{'Adı': 'Ayşe', 'Ortalama': 82}
{'Adı': 'Mehmet', 'Ortalama': 50}
{'Adı': 'Duygu', 'Ortalama': 50}
{'Adı': 'Buse', 'Ortalama': 72}
{'Adı': 'Orhan', 'Ortalama': 50}
{'Adı': 'Kerim', 'Ortalama': 65}
{'Adı': 'Mustafa', 'Ortalama': 50}
{'Adı': 'Şule', 'Ortalama': 75}
{'Adı': 'Baran', 'Ortalama': 91}
{'Adı': 'Kaan', 'Ortalama': 74}
{'Adı': 'Osman', 'Ortalama': 62}
{'Adı': 'Banu', 'Ortalama': 100}
{'Adı': 'Burhan', 'Ortalama': 50}
{'Adı': 'Oğuz', 'Ortalama': 63}
{'Adı': 'Ali', 'Ortalama': 75}
"""
update_one()karåä±layanilkKayä±dä±deäiÅtirir。 update_many()isetã¼mkaråä±layanKayä±tlarä±。
限制Sorgularä±
我们使用limit()方法来结果。
我们确定限制()将能够使用该方法接收的参数进行操作。
hepsa°
for x in mydb.find():
print(x)
"""
{'_id': ObjectId('63d7dba343737eb5fa87bfb3'), 'Adı': 'Ali', 'Ortalama': 63}
{'_id': ObjectId('63d7dba343737eb5fa87bfb4'), 'Adı': 'Ayşe', 'Ortalama': 82}
{'_id': ObjectId('63d7dba343737eb5fa87bfb5'), 'Adı': 'Mehmet', 'Ortalama': 50}
{'_id': ObjectId('63d7dba343737eb5fa87bfb6'), 'Adı': 'Duygu', 'Ortalama': 50}
{'_id': ObjectId('63d7dba343737eb5fa87bfb7'), 'Adı': 'Buse', 'Ortalama': 72}
{'_id': ObjectId('63d7dba343737eb5fa87bfb8'), 'Adı': 'Orhan', 'Ortalama': 50}
{'_id': ObjectId('63d7dba343737eb5fa87bfb9'), 'Adı': 'Kerim', 'Ortalama': 65}
{'_id': ObjectId('63d7dba343737eb5fa87bfba'), 'Adı': 'Mustafa', 'Ortalama': 50}
{'_id': ObjectId('63d7dba343737eb5fa87bfbb'), 'Adı': 'Şule', 'Ortalama': 75}
{'_id': ObjectId('63d7dba343737eb5fa87bfbc'), 'Adı': 'Baran', 'Ortalama': 91}
{'_id': ObjectId('63d7dba343737eb5fa87bfbd'), 'Adı': 'Kaan', 'Ortalama': 74}
{'_id': ObjectId('63d7dba343737eb5fa87bfbe'), 'Adı': 'Osman', 'Ortalama': 62}
{'_id': ObjectId('63d7dba343737eb5fa87bfbf'), 'Adı': 'Banu', 'Ortalama': 100}
{'_id': ObjectId('63d7dba343737eb5fa87bfc0'), 'Adı': 'Burhan', 'Ortalama': 50}
{'_id': ObjectId('63d7dba343737eb5fa87bfc1'), 'Adı': 'Oğuz', 'Ortalama': 63}
{'_id': ObjectId('63d7dba343737eb5fa87bfc2'), 'Adı': 'Ali', 'Ortalama': 75}
"""
ilk 5 i
for x in mydb.find().limit(5):
print(x)
"""
{'_id': ObjectId('63d7dba343737eb5fa87bfb3'), 'Adı': 'Ali', 'Ortalama': 63}
{'_id': ObjectId('63d7dba343737eb5fa87bfb4'), 'Adı': 'Ayşe', 'Ortalama': 82}
{'_id': ObjectId('63d7dba343737eb5fa87bfb5'), 'Adı': 'Mehmet', 'Ortalama': 50}
{'_id': ObjectId('63d7dba343737eb5fa87bfb6'), 'Adı': 'Duygu', 'Ortalama': 50}
{'_id': ObjectId('63d7dba343737eb5fa87bfb7'), 'Adı': 'Buse', 'Ortalama': 72}
"""
删除Sorgularä±
delete_one()
要删除文档,我们使用delete_one()方法。
delete_one()方法的第一个参数是一个查询对象,定义将删除哪些文档。
注意:如果查询找到多个文档,则仅删除。
我们检查有人每月一个月
for x in mydb.find({"Adı":"Ayşe"}):
print(x)
"""
{'_id': ObjectId('63d7dba343737eb5fa87bfb4'), 'Adı': 'Ayşe', 'Ortalama': 82}
"""
1个月Å现在我们想删除它。BR>
myquery = {"Adı":"Ayşe"}
Å现在我们可以用delete_one()删除。
mydb.delete_one(myquery)
# <pymongo.results.DeleteResult at 0x7f23655ced70>
让我们检查一下。
mydb.find_one({"Adı":"Ayşe"})
# None
delete_many()
要删除多个尊严,请使用delete_many()方法。
注意50个是sä°lä°。
for x in mydb.find({"Ortalama":50},{"_id":0}):
print(x)
"""
{'Adı': 'Mehmet', 'Ortalama': 50}
{'Adı': 'Duygu', 'Ortalama': 50}
{'Adı': 'Orhan', 'Ortalama': 50}
{'Adı': 'Mustafa', 'Ortalama': 50}
{'Adı': 'Burhan', 'Ortalama': 50}
"""
我们不值得删除记录。
myquery = {"Ortalama":50}
silmeiÅleminiGerã§ekleåTiriyoruz。
mydb.delete_many(myquery)
# <pymongo.results.DeleteResult at 0x7f23655ce800>
让我们再次检查
for x in mydb.find({"Ortalama":50},{"_id":0}):
print(x)
# None