快速构建 DMS Web 应用程序之利刃: Flask + Celery + Redis + Cloudant(4)
- UID
- 1066743
|
快速构建 DMS Web 应用程序之利刃: Flask + Celery + Redis + Cloudant(4)
快速使用 Cloudant一个项目中除了临时变量,还有一些需要持久化保存的数据,这个时候就需要 Cloudant 来对持久化数据进行存储了。
使用 Cloudant 需要先创建一个 IBM Cloud 账户,并将账户连接到 IBM ID,而后可以开始构建数据库。在浏览器中输入网址: https://console.bluemix.net/ 即可进入 IBM Cloud 注册页面,如图 4 所示:
图 4. IBM Cloud 入口
进入官网后创建 IBM Cloud 账户,便可以看到账户下的资源信息,如图 5 所示:
图 5. 仪表盘文件
然后点击目录,进入 Databases > Cloudant。
图 6. Cloudant 入口
拥有 IBM Cloud 的账号后,安装 Python 库来使用 Cloudant:$ pip freeze,查看安装列表中是否安装了 Cloudant 2.8.1,若没有,则运行命令:$ pip install cloudant==2.8.1。然后在 Python 文件中引入 Cloudant: import cloudant。
此时便可以将 Cloudant 服务接入 IBM Cloud,首先登录至 IBM Cloud,并将 Cloudant NoSQL DB 服务添加到 IBM Cloud 空间,然后打开仪表盘,点击进入服务,点击左侧服务凭证添加凭证,如图 7 所示:
图 7. 添加凭证页面
在脚本中进行基本认证:client = Cloudant(USERNAME, PASSWORD, url=url, connect=True)
然后创建数据库:
- 在 Python 脚本中定义数据库名:databaseName = "<DatabaseName>"。
- 创建数据库:myDatabase = client.create_database(databaseName)。
- 通过以下代码验证数据库是否创建成功:
if myDatabase.exists():
print "'{0}' successfully created.\n".format(databaseName)
|
如果成功,则可以对数据进行保存并进行一些操作,如:
- 定义一组数据,如清单 4 所示。
- 通过 Python 逐行获取数据,如清单 5 所示。
清单 4. 定义一组数据1
2
3
4
5
6
7
| sampleData = [
[1, "one", "boiling", 100],
[2, "two", "hot", 40],
[3, "three", "warm", 20],
[4, "four", "cold", 10],
[5, "five", "freezing", 0]
]
|
清单 5. 通过 Python 逐行获取数据1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
| # Create documents by using the sample data.
# Go through each row in the array
for document in sampleData:
# Retrieve the fields in each row.
number = document[0]
name = document[1]
description = document[2]
temperature = document[3]
# Create a JSON document that represents
# all the data in the row.
jsonDocument = {
"numberField": number,
"nameField": name,
"descriptionField": description,
"temperatureField": temperature
}
# Create a document by using the database API.
newDocument = myDatabase.create_document(jsonDocument)
# Check that the document exists in the database.
if newDocument.exists():
print "Document '{0}' successfully created.".format(number)
|
|
|
|
|
|
|