當前位置:首頁 » 操作系統 » pymongo資料庫

pymongo資料庫

發布時間: 2022-09-21 12:43:17

A. python中mongodb怎麼連接其他伺服器的資料庫

1、基於mongo實現遠程連接

[plain] view plain

mongo -u admin -p admin 192.168.0.197:27017/pagedb

通過mongo實現連接,可以非常靈活的選擇參數選項,參看命令幫助,如下所示:

[plain] view plain

mongo --help
MongoDB shell version: 1.8.3
usage: mongo [options] [db address] [file names (ending in .js)]
db address can be:
foo foo database on local machine
192.169.0.5/foo foo database on 192.168.0.5 machine
192.169.0.5:9999/foo foo database on 192.168.0.5 machine on port 9999
options:
--shell run the shell after executing files
--nodb don't connect to mongod on startup - no 'db address'
arg expected
--quiet be less chatty
--port arg port to connect to
--host arg server to connect to
--eval arg evaluate javascript
-u [ --username ] arg username for authentication
-p [ --password ] arg password for authentication
-h [ --help ] show this usage information
--version show version information
--verbose increase verbosity
--ipv6 enable IPv6 support (disabled by default)

2、基於MongoDB支持的javascript實現遠程連接

當你已經連接到一個遠程的MongoDB資料庫伺服器(例如,通過mongo連接到192.168.0.184),現在想要在這個會話中連接另一個遠程的資料庫伺服器(192.168.0.197),可以執行如下命令:

[plain] view plain

> var x = new Mongo('192.168.0.197:27017')
> var ydb = x.getDB('pagedb');
> use ydb
switched to db ydb
> db
ydb
> ydb.page.findOne()
{
"_id" : ObjectId("4eded6a5bf3bfa0014000003"),
"content" : "巴黎是浪漫的城市,可是...",
"pubdate" : "2006-03-19",
"title" : "巴黎:從布魯塞爾趕到巴黎",
"url" : "http://france.bytravel.cn/Scenery/528/cblsegdbl.html"
}

上述通過MongoDB提供的JavaScript腳本,實現對另一個遠程資料庫伺服器進行連接,操作指定資料庫pagedb的page集合。

如果啟用了安全認證模式,可以在獲取資料庫連接實例時,指定認證賬號,例如:

[plain] view plain

> var x = new Mongo('192.168.0.197:27017')
> var ydb = x.getDB('pagedb', 'shirdrn', '(jkfFS$343$_\=\,.F@3');
> use ydb
switched to db ydb

B. django 怎麼查詢mongodb數據

清單 1. 您可以嘗試對 MongoDB 使用的樣例 JavaScript 命令
var x = "0";
x === 0;
typeof({});

您不必成為一名 JavaScript 專家之後才開始使用 MongoDB;這里提供幾個有用的概念:
您可以使用對象字面量語法 (object literal syntax) 創建對象,換句話說,會使用兩個花括弧(如 var myCollection = {};)。
您可以使用方括弧([])來創建數組。
除了數字、布爾值、null 和未定義值以外,JavaScript 中的其他所有值都是一個對象。
如果您想要了解關於 JavaScript 其他特性的更多信息,比如原型的面向對象的編程 (OOP)、范圍規則,及其函數式編程特性,請參閱 參考資料。
MongoDB 是一種無模式資料庫,與關系型資料庫完全相反。無模式資料庫沒有使用表格,而是使用由文檔組成的集合。這些文檔是使用對象字面量語法創建的,如 清單 2 所示。
清單 2. 文檔創建示例
var person1 = {name:"John Doe", age:25};
var person2 = {name:"Jane Doe", age:26, dept: 115};

現在,請執行 清單 3 中所示的命令來創建一個新集合。
清單 3. 創建集合
db.employees.save(person1);
db.employees.save(person2);

由於 MongoDB 具有無模式特性,所以 person1 和 person2 不必具有相同的列類型,甚至不必擁有相同的列編號。並且,MongoDB 本身具有動態特性,所以它會創建 employees 而不是拋出一個錯誤。您可以通過 find() 方法檢索文檔。要獲取 employees 中的所有文檔,可以直接調用 find(),無需使用任何參數,如 清單 4 所示。
清單 4. 一個簡單的 MongoDB 查詢
> db.employees.find();
// returns
[
{ "_id" : { "$oid" : "4e363c4dcc93747e68055fa1" },
"name" : "John Doe", "age" : 25 },
{ "_id" : { "$oid" : "4e363c53cc93747e68055fa2" },
"name" : "Jane Doe", "dept" : 115, "age" : 26 }
]

注意,_id 等效於一個主鍵。要運行具體的查詢,則需要使用鍵/值對傳遞另一個對象來指示您所要查詢的內容,如 清單 5 所示。
清單 5. 通過一個搜索參數進行查詢
> db.employees.find({name: "John Doe"});
// returns
[
{ "_id" : { "$oid" : "4e363c4dcc93747e68055fa1" },
"name" : "John Doe", "age" : 25 }
]

要查詢年齡大於 25 歲的員工,請執行 清單 6 中的命令。
清單 6. 查詢年齡大於 25 歲的員工
> db.employees.find({age:{'$gt':25}});
// returns
[
{ "_id" : { "$oid" : "4e363c53cc93747e68055fa2" },
"name" : "Jane Doe", "dept" : 115, "age" : 26 }
]

$gt 是一個特殊操作符,表示大於。表 1 列出了其他修飾符。
表 1. 可以對 MongoDB 使用的修飾符

修飾符
描述

$gt 大於
$lt 小於
$gte 大於或等於
$lte 小於或等於
$in 檢查某個數組是否存在,類似於 'in' SQL 操作符。
當然,您也可以使用 update() 方法更新記錄。您可以更新整條記錄,如 清單 7 所示。
清單 7. 更新整條記錄
> db.employees.update({
name:"John Doe", // Document to update
{name:"John Doe", age:27} // updated document
});

此外,您還可以使用 $set 操作符僅更新一個值,如 清單 8 所示。
清單 8. 僅更新記錄中的一個值
> db.employees.update({name:"John Doe",
{ '$set': {age:27} }
});

要清空集合,可以調用 remove() 方法,無需使用任何參數。例如,如果您想要從 employees 集合中移除 John Doe,那麼您可以執行 清單 9所示的操作。
清單 9. 從 employees 集合中移除 John Doe
> db.employees.remove({"name":"John Doe"});
> db.employees.find();
// returns
[
{ "_id" : { "$oid" : "4e363c53cc93747e68055fa2" }, "name" : "Jane Doe",
"dept" : 115, "age" : 26 }
]

此內容對於剛開始使用 MongoDB 的您來說已經足夠了。當然,您可以繼續瀏覽官方網站,該網站提供了簡潔的、基於 Web 的互動式 mongodb 命令提示符,以及指南和官方文檔。請參閱 參考資料。
回頁首
將 Django 與 MongoDB 集成
有幾個從 Python 或 Django 訪問 MongoDB 的選項。第一個選項是使用 Python 模塊,即 PyMongo。清單 10 是一個簡單的 PyMongo 會話,假設您已經安裝了 MongoDB,並且已經擁有一個在埠上運行的實例。
清單 10. 樣例 PyMongo 會話
from pymongo import Connection

databaseName = "sample_database"
connection = Connection()

db = connection[databaseName]
employees = db['employees']

person1 = { "name" : "John Doe",
"age" : 25, "dept": 101, "languages":["English","German","Japanese"] }

person2 = { "name" : "Jane Doe",
"age" : 27, "languages":["English","Spanish","French"] }

print "clearing"
employees.remove()

print "saving"
employees.save(person1)
employees.save(person2)

print "searching"
for e in employees.find():
print e["name"] + " " + unicode(e["languages"])

PyMongo 允許您同時運行多個資料庫。要定義一個連接,只需將資料庫名字傳遞給連接實例。在本例中,Python 詞典代替了 JavaScript 對象字面量來創建新文檔定義,而 Python 列表代替了 JavaScript 數組。find 方法會返回一個您可以進行迭代的資料庫游標對象。
語法的簡易性使 MongoDB 命令行與包含 PyMongo 的運行命令之間的切換變得容易。例如,清單 11 展示了如何使用 PyMongo 運行一個查詢。
清單 11. 使用 PyMongo 運行一個查詢
for e in employees.find({"name":"John Doe"}):
print e

您從 Python 調用 MongoDB 的另一個選項是 MongoEngine,如果您使用過 Django 的內置 ORM,那麼您對此應該感到非常熟悉。MongoEngine 是一個文檔到對象的映射器,從概念上說,它與映射到 ORM 的映射器類似。清單 12 顯示了一個使用 MongoEngine 的示例會話。
清單 12. MongoEngine 示例會話
from mongoengine import *

connect('employeeDB')

class Employee(Document):
name = StringField(max_length=50)
age = IntField(required=False)

john = Employee(name="John Doe", age=25)
john.save()

jane = Employee(name="Jane Doe", age=27)
jane.save()

for e in Employee.objects.all():
print e["id"], e["name"], e["age"]

Employee 對象繼承自 mongoengine.Document。在本示例中,使用了兩種欄位類型:StringField 和 IntField。與 Django 的 ORM 相似,要通過查詢獲得集合中的所有文檔,請調用 Employee.objects.all()。請注意,要訪問惟一的對象 ID,請使用 "id" 而非 "_id"。
回頁首
一個樣例博客
現在要創建一個名為 Blongo 的簡單博客。您將使用 Python 1.7、Django 1.3、MongoDB 1.8.2、MongoEngine 0.4 和 Hypertext Markup Language (HTML) 5。如果您想要重現我的精確設置,我習慣使用 Ubuntu linux 和 FireFox。Blongo 在網頁載入後就會顯示所輸入的所有博客條目,並且允許對任何條目執行更新和刪除操作,換句話說,允許進行所有的標准 CRUD 操作。Django 視圖擁有三個方法:index、update 和delete。
層疊樣式表 (CSS) 定義被引入一個單獨的靜態文件。相關內容我不想在此處贅述,您可以隨意瀏覽 下載 部分中包含的源代碼。
假設已安裝好所需的所有工具,並且這些組件都能良好運行,那麼請創建一個新的 Django 項目和必要的組件,如 清單 13 所示。
清單 13. 創建 Django 博客項目的命令
$ django-admin.py startproject blongo
$ cd blongo
$ django-admin.py startapp blogapp
$ mkdir templates
$ cd blogapp
$ mkdir static

Django 1.3 的新增內容是一個已包含在 Django 中的貢獻型應用程序,可使用它來改進靜態文件的處理。通過向任何應用程序目錄添加一個靜態目錄(例如,本例中的 blogapp)並確保 django.contrib.staticfiles 包含在已安裝應用程序中,Django 可以查找到諸如 .css 和 .js 的靜態文件,而無需使用其他任何方法。清單 14 顯示了設置文件的代碼行,這些代碼行已經進行了相應修改(來自默認的 settings.py 文件),使博客應用程序能夠正常運行。

C. mongo資料庫是怎麼創建索引

2種方式:

(1)mongo shell

db.yourCollectionName.createIndex({fieldName: 1})

舉例:

db.gameShortLink.createIndex({shortLink: 1})

(2)pymongo代碼

indexKeyList = [

("fieldName", pymongo.ASCENDING),

]

mongoCollection.create_index(indexKeyList)

註:

一次性創建多個索引,舉例:

import pymongo

from pymongo import IndexModel

# from pymongo import ASCENDING, DESCENDING

indexShortLink = IndexModel([("shortLink", pymongo.ASCENDING)], name="shortLink")

indexIsParseOk = IndexModel([("parsedLink.isParseOk", pymongo.ASCENDING)], name="parsedLink_isParseOk")

indexErrType = IndexModel([("parsedLink.errType", pymongo.ASCENDING)], name="parsedLink_errType")

indexRealGameName = IndexModel([("parsedGame.realGameName", pymongo.ASCENDING)], name="parsedGame_realGameName")

indexGameTheme = IndexModel([("parsedGame.gameTheme", pymongo.ASCENDING)], name="parsedGame_gameTheme")

indexModelList = [

indexShortLink,

indexIsParseOk,

indexErrType,

indexRealGameName,

indexGameTheme,

]

mongoCollectionShortlink.create_indexes(indexModelList)




詳見:(網路搜)

【已解決】用mongo的shell給MongoDB創建索引以提高查詢速度

【已解決】PyMongo中如何一次性創建多個index索引

D. pymongo 查看數據有多少條

清單 1. 您可以嘗試對 MongoDB 使用的樣例 JavaScript 命令var x = "0"; x === 0; typeof({}); 您不必成為一名 JavaScript 專家之後才開始使用 MongoDB;這里提供幾個有用的概念: 您可以使用對象字面量語法 (object literal syntax) 創建對象,...

E. python 怎樣通過遍歷以下文件後全部讀到mongodb資料庫中

python 訪問 mongodb 需要先安裝 pymongo,如下:

1pipinstallpymongo

txt 文件格式:

代碼如下:


#coding=utf-=MongoClient('127.0.0.1',27017)#連接test資料庫,沒有則自動創建db=conn.test#使用students集合,沒有則自動創建students=db.students#打開學生信息文件,並將數據存入到資料庫withopen('students.txt','r')asf:forlineinf.readlines():#分割學生信息items=line.strip(' ').strip(' ').split(',')#添加到資料庫students.insert({'stu_id':items[0],'name':items[1],'grade':int(items[2])})#資料庫查詢學生信息並列印出來forsinstudents.find():print(s)

F. pymongo和mongoengine的區別

Tornado 中 PyMongo Motor MongoEngine 的性能測試

最近在使用 Tornado 開發 API,資料庫選擇了 MongoDB,因為想使用 Geo 搜索的特性。Python 可供選擇的 MongoDB Drivers 可以在官網查找。

在這些 Drivers 中,GitHub 上 Star 數最多的有 3 個:

  • PyMongo

  • Motor(適用於 Tornado 的非同步 driver)

  • MongoEngine(ORM-like Layers)

  • Motor 和 MongoEngine 都是基於 PyMongo,Motor 的最新版是基於 PyMongo 2.8,Motor 的優勢就在於非同步,而 PyMongo 在 2.2 以後的版本,就開始支持 gevent。

    MongoEngine 借鑒了 Django 的 ORM,提供了一個ORM-like layer,官方稱作 Document-Object Mapper,可以像使用 Django 的 ORM 一樣,簡單的操作和處理數據。

    面對這么多選擇,就想探究這些選擇都有哪些特點,性能如何,所以有了這篇文章。你可以在這里找到所有的測試代碼和測試數據

從測試的結果來看,Motor 的性能確實很好,gevent 幾乎沒有性能提升,PyMongo 2.8 的性能很差,MongoEngine 是在 PyMongo 的基礎上有封裝了一層,但是兩者性能相差不大。

Tornado 的單線程的,同步的資料庫 Driver 會將 Tornado 阻塞住,導致無法處理其他的請求。

最後給出一組數據,百分比請求的最大響應時間。下面這張圖,左邊坐標的單位是毫秒。例如 Motor 有 50% 的請求是在 376 毫秒內完成的。

PyMongo 2.8,PyMongo 2.8 + gevent,MongoEngine + PyMongo 2.8 三條線重疊在了一起,它們之間的性能相當。

G. 如何判斷pymongo 查詢為空

清單 1. 您可以嘗試對 MongoDB 使用的樣例 JavaScript 命令var x = "0";
x === 0;
typeof({});

您不必成為一名 JavaScript 專家之後才開始使用 MongoDB;這里提供幾個有用的概念:
您可以使用對象字面量語法 (object literal syntax) 創建對象,換句話說,會使用兩個花括弧(如 var myCollection = {};)。
您可以使用方括弧([])來創建數組。
除了數字、布爾值、null 和未定義值以外,JavaScript 中的其他所有值都是一個對象。
如果您想要了解關於 JavaScript 其他特性的更多信息,比如原型的面向對象的編程 (OOP)、范圍規則,及其函數式編程特性,請參閱 參考資料。
MongoDB 是一種無模式資料庫,與關系型資料庫完全相反。無模式資料庫沒有使用表格,而是使用由文檔組成的集合。這些文檔是使用對象字面量語法創建的,如 清單 2 所示。
清單 2. 文檔創建示例
var person1 = {name:"John Doe", age:25};
var person2 = {name:"Jane Doe", age:26, dept: 115};

現在,請執行 清單 3 中所示的命令來創建一個新集合。
清單 3. 創建集合
db.employees.save(person1);
db.employees.save(person2);

H. python爬蟲學習教程哪個好

第一階段

Python開發基礎和核心特性1.變數及運算符2.分支及循環3.循環及字元串4.列表及嵌套列表5.字典及項目練習6.函數的使用7.遞歸及文件處理8.文件9.面向對象10.設計模式及異常處理11.異常及模塊的使用12.坦克大戰13.核心編程14.高級特性15.內存管理

第二階段

資料庫和linux基礎1.並發編程2.網路通信3.MySQL4.Linux5.正則表達式

第三階段

web前端開發基礎1.html基本標簽2.css樣式3.css浮動和定位4.js基礎5.js對象和函數6.js定時器和DOM7.js事件響應8.使用jquery9.jquery動畫特效10.Ajax非同步網路請求

第四階段

Python Web框架階段1.Django-Git版本控制2.Django-博客項目3.Django-商城項目4.Django模型層5.Django入門6.Django模板層7.Django視圖層8.Tornado框架

第五階段

Python 爬蟲實戰開發1.Python爬蟲基礎2.Python爬蟲Scrapy框架

I. 為什麼連接不到本機的mongodn資料庫,總是報connect fail的錯

Mongoengine是一個可以操作MongoDB資料庫的對象-文檔映射器(Object-Document Mapper)。出於工作需要,最近在使用MongoDB+Django實現一個數據錄入系統小網站的過程中,出現通過Mongoengine無法從 Python 調用 MongoDB,在connect()資料庫一步的時候出現下面錯誤:
>>> from mongoengine import connect
>>> connect(『healthmanager『)
Traceback (most recent call last):
File "<console>", line 1, in <mole>
File "/usr/local/python2.7/lib/python2.7/site-packages/mongoengine/connection.py", line 164, in connect
return get_connection(alias)
File "/usr/local/python2.7/lib/python2.7/site-packages/mongoengine/connection.py", line 126, in get_connection
raise ConnectionError("Cannot connect to database %s :\n%s" % (alias, e))
ConnectionError: Cannot connect to database default :
False is not a read preference.

其原因在於,通過「pip install mongoengine」安裝的mongoengine為0.9.0版本,同時該命令把pymongo-3.0.2的模塊依賴也裝好了,而pymongo-3.0.2跟mongoengine-0.9.0之間存在兼容問題,從而導致默認的資料庫無法connect成功。
>>> import pymongo
>>> pymongo.version
『3.0.2『

另外,CentOS 6.5下用「pip install pymongo」安裝的pymongo為3.0.2版本,而mongoengine作為pymongo的一個擴展包,是沒有安裝的。因此在使用mongoengine的時候,安裝完mongoengine後,需要降低pymongo版本至3.0以下。、

解決方法:
=> pip install mongoengine # 安裝mongoengine
=> pip uninstall pymongo # 卸載pymongo-3.0.2
=> pip install pymongo==2.8 # 安裝pymongo-2.8

重新connect:
>>> from mongoengine import connect
>>> connect(『healthmanager『)
MongoClient(『localhost『, 27017)

J. 如何使用python獲取mongoDB資料庫中表格的欄位名

db = pymongo.MongoClient().test
dates = db.user.find()
print type(dates)
for i in dates:
print i.keys()
break
創建連接,取到dates數據,不就是一個字典列表啊,取一個值然後字典操作.keys()不就可以了。

熱點內容
內置存儲卡可以拆嗎 發布:2025-05-18 04:16:35 瀏覽:336
編譯原理課時設置 發布:2025-05-18 04:13:28 瀏覽:378
linux中進入ip地址伺服器 發布:2025-05-18 04:11:21 瀏覽:613
java用什麼軟體寫 發布:2025-05-18 03:56:19 瀏覽:32
linux配置vim編譯c 發布:2025-05-18 03:55:07 瀏覽:107
砸百鬼腳本 發布:2025-05-18 03:53:34 瀏覽:945
安卓手機如何拍視頻和蘋果一樣 發布:2025-05-18 03:40:47 瀏覽:742
為什麼安卓手機連不上蘋果7熱點 發布:2025-05-18 03:40:13 瀏覽:803
網卡訪問 發布:2025-05-18 03:35:04 瀏覽:511
接收和發送伺服器地址 發布:2025-05-18 03:33:48 瀏覽:372