云函数 现在很火的东东
概念:云函数即在云端(服务器端)运行的函数。在物理设计上,一个云函数可由多个文件组成,占用一定量的 CPU 内存等计算资源;各云函数完全独立;可分别部署在不同的地区。开发者无需购买、搭建服务器,只需编写函数代码并部署到云端即可在小程序端调用,同时云函数之间也可互相调用。
就是可以用云函数直接写后台接口然后发布就可以用了。
用腾讯sfc(云函数)来实践一下。那么问题来了,既然是做的后台,那么数据存哪呢,云数据库?当然不行,你可以看下云数据库有多贵,小成本的根本负担不起。
那么有其他解决的方法吗?
有:腾讯CSF(文件存储)加sqllite数据库。SFC挂在CFS,就可以像本地一样,访问文件。然后创建一个sqlite 就可以,用python对这个数据库增删改查了。
下面直接撸一遍。
1、当然是创建腾讯云的账号,我是微信扫码登陆的。
2、SFC创建云函数。
云函数有两个,一个Event函数,另一个是Web函数。
event函数,不能直接web调用,需要在配置api网关,才能web调用。
web函数,创建后可以直接web调用,api网关直接配置。
下图:选模版创建,筛选web 和hello,根据自己的语言能选择模版,我选择的是python模版。创建面板参数可以不用管,直接完成即可。
完成后看代码页面:差不多是这种,直接是跟返回的“Hello world” 好的,我们可以调用我们的云函数了。
在触发管理页面,有个访问路径复制到浏览器访问,或者直接点击url跳转访问。可以看到访问结果。
2、私有网络VPC
简单的说就是,腾讯云的不同产品之间是隔离的,SFC 使用CSF存储的文件,怎么用?不像本地程序天然可以访问本地的资源,只要路径,权限就好。但是他们之间是隔离的,怎么联通呢,这就是vpc的作用了。
腾讯云 云产品列表中选择私有网络,然后新建。填下下面几个信息就完成了。
3、CFS文件存储
创建==>选择文件系统==>选择vpc==>完成。
注意费用:存储量不大情况下还是可以接受的。
4、云函数 挂载 文件系统。
然后在云函数中 “函数管理”==》配置,在网络配置合文件系统中 选择之前的 vpc 和文件系统。
5、 sqlite
直接上代码吧,到此一个后台的增删改查基本可以完成。
from flask import Flask,jsonify,request
import sqlite3
import json
import os
dbfilename = '/mnt/sqllitedb.db'
conn = sqlite3.connect(dbfilename,check_same_thread=False)
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello World'
@app.route('/db')
def dbtest():
return jsonify({"code":os.path.exists(dbfilename)})
@app.route('/createTable')
def createTable():
cursor = conn.cursor()
sql = "create table IF NOT EXISTS login (id varchar(20) primary key, name varchar(30), password varchar(30))"
cursor.execute(sql)
cursor.close()
conn.commit()
return jsonify({"code":200})
@app.route('/getalltablename')
def getalltablename():
cursor = conn.cursor()
sql = "select name from sqlite_master where type='table' order by name"
cursor.execute(sql)
values = cursor.fetchall()
cursor.close()
return jsonify({"code":200,"tablenames":values})
@app.route('/addUser', methods=['POST'])
def addUser():
print("post body:" ,request.get_json())
_name = request.get_json()["name"]
_password = request.get_json()["password"]
cursor = conn.cursor()
sql = "insert into login (name, password) values (?, ?)"
cursor.execute(sql,(_name,_password))
cursor.close()
conn.commit()
return jsonify({"code":200})
@app.route('/getAllUser')
def getAllUser():
cursor = conn.cursor()
sql = "select * from login"
cursor.execute(sql)
values = cursor.fetchall()
cursor.close()
return jsonify({"code":200,"users":values})
if __name__ == '__main__':
app.run(host='0.0.0.0',port=9000)