本文主要讲述python程序对微信云开发数据库的操作。

直接操作

直接操作指的是通过python程序对云开发数据库直接进行操作。
所有的操作前提都是在获取access_token下进行的,先通过下列代码获取access_token在进行接下来的操作。

1
2
3
4
5
6
7
8
9
10
def access_token():
""""
获取access_token
"""
APPID = '**********' //小程序ID
APPSECRET = '**************' //小程序秘钥
WECHAT_URL = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=' + APPID + '&secret=' + APPSECRET
response = requests.get(WECHAT_URL)
result = response.json()
return result["access_token"] //将返回值解析获取access_token

创建集合

此方法的创建只需要将集合的名字post给数据库即可。

1
2
3
4
5
6
7
8
9
10
11
12
def databaseCollectionAdd(access_token):
""""
创建数据库
"""
url = 'https://api.weixin.qq.com/tcb/databasecollectionadd?access_token'+access_token
data={
"env":"******", //用户的数据库环境ID
"collection_name": "*******" //数据库集合的名称
}
response = requests.post(url, data=json.dumps(data))
result = response.json()
print(result) //将返回值打印

查询记录

将集合的名字Post即可返回该集合的信息。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
def databaseQuery(access_token,collection_name):
""""
检索数据库
collection_name 集合的名称
.limit() 括号内的数值限定返回的记录数
"""
url = 'https://api.weixin.qq.com/tcb/databasequery?access_token=' + access_token
data = {
"env": "*******", //用户的数据库环境ID
"query": "db.collection(\""+collection_name+"\").limit(100).get()"
}
response = requests.post(url, data=json.dumps(data))
result = response.json()
print(result) //将返回值打印

插入记录

通过Post集合名字和Add函数对内容(datas)的传输。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
def databaseAdd(access_token,collection_name):
""""
新建记录并对内容进行定义
collection_name 集合的名称
"""
url = 'https://api.weixin.qq.com/tcb/databaseadd?access_token' + access_token
data = {
"env": "",
"query": "db.collection(\""+collection_name+"\").add({"+datas+"})"
}
datas=[{
"字段名称""内容"
"""
这里主要是对创建记录的直接定义
"""
}]
response = requests.post(url, data=json.dumps(data))
result = response.json()
print(result) //将返回值打印

经测试这种创建记录的方式对datas的定义要求较为严格,一但定义不够严格会出现创建失败,所以建议通过间接的方式对数据库进行插入记录。

删除记录

通过Post集合名称将该集合直接从数据库移除。

1
2
3
4
5
6
7
8
9
10
11
12
def databaseQuery(access_token,collection_name):
""""
collection_name 集合的名称
"""
url = 'https://api.weixin.qq.com/tcb/databasedelete?access_token=' + access_token
data = {
"env": "*******", //用户的数据库环境ID
"query": "db.collection(\""+collection_name+"\")..where({done:false}).remove()"
}
response = requests.post(url, data=json.dumps(data))
result = response.json()
print(result) //将返回值打印

更新记录

更新记录是对已有的记录内容进行修改,所以说想要对记录内容修改不可用.add()进行,通过.update()进行内容修改

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
def databaseUpdate(access_token,collection_name):
""""
.where() 该集合所在记录的检索
"""
url = 'https://api.weixin.qq.com/tcb/databaseadd?access_token' + access_token
data = {
"env": "",
"query": "db.collection(\""+collection_name+"\").where({age:14}).update({data:{age: _.inc(1)}})""
}
"""
这个例子是将集合里age=14所有记录自增1
"""
response = requests.post(url, data=json.dumps(data))
result = response.json()
print(result) //将返回值打印

更新是对记录的操作,所以很需要.where()的帮助,请大家牢记该函数的使用。

总结

这是通过对微信小程序一段时间的学习后总结出来的,本作者是个新人,如有错误可指出,我将及时改正。
第二部分是通过调用云函数来对数据库进行操作,这种方法的BUG似乎比直接操作少。