本系列文章已经重构并且转移至我的个人博客网站,欢迎来看
涉及工具
1、服务器端:
python+flask+sqlite3(编写服务器端实现代码)
gunicorn(运行python程序)
nginx(反向代理)
2、Android端:
okhttp3(实现网络相关的请求)
GSON(用于解析服务器端返回的json格式数据)
3、电脑端:
WinSCP(图形化SFTP客户端,用于访问远程服务器的文件)
DB Browser forSQLite(用于查看.db数据库文件)
SecureCRT(终端仿真程序,用于Windows下登录Unix或Linux服务器主机)
NotePad++和插件NppFTP,同样也是用于远程访问服务器端文件,同时可以直接在线编辑代码,保存后自动上传至服务器端(直接用SFTP+密钥/密码登录)
项目整体概述
目标效果:多台Android设备共享同一份数据,一个设备更改信息后能够立刻同步到所有设备。
实现原理:订单数据储存在服务器端的数据库(sqlite3)内部,手机端通过okhttp3向网页提交请求,网页(flask)收到请求后读取后端数据库信息并以JSON格式返回,手机端利用GSON解析返回的数据。(服务器端nginx监听云服务器的80端口(Http端口),并将传来的数据转发给gunicorn运行的端口,然后python编写的程序解析数据,并作出反应)。
------------------------------------------------------------------------------------------------------------------
因为每个人的需求都不一样,所以我这里只是写一些通用的知识,帮助你入门,比较适合没什么概念的小白。(具体问题的可以留言我尽可能解决)
-----------------------------------------------------------------------------------------------------------------
flask+ sqlite3 + python —— 服务器端程序开发
服务器端编程使用的是python语言,涉及flask和sqlite3两个库,其中flask用于构建Web程序(获得并相应用户请求GET/POST),sqlite3用户操作数据库相关的内容。
编写flask程序:
一、前期环境配置
此处我们使用“宇宙最强IDE”Visual Studio来编写程序。因为sqlite3是python自带的一款轻量级数据库,所以我们只需要安装flask即可。安装 flask 最便捷的方式是使用虚拟环境。
win+R并输入cmd打开命令提示符,利用cd指令转到工程目录,并输入
virtualenv env #创建名为env的虚拟环境
然后利用
cd env/Scripts
activate #激活虚拟环境
当出现(env)的时候就证明虚拟环境成功激活,然后就可以在虚拟环境里面安装flask了。
pip install flask #安装flask
前期的环境配置就大功告成了,然后就可以利用VS开始写代码了。
二、Flask程序介绍
(1)初始化
from flask import Flask
app = Flask(__name__)
(2)路由和视图函数
- 客户端(例如 Web 浏览器)把请求发送给 Web 服务器
- Web服务器再把请求发送给 **Flask程序实例**app
- app需要知道:对每个URL请求运行哪些代码,所以保存了一个URL到Python函数的映射关系。处理 URL 和函数之间关系的程序称为路由
在 Flask 程序中定义路由的最简便方式,是使用程序实例提供的 app.route 修饰器,把修饰的函数注册为路由。如:
@app.route('/')
def index():
return'Hello Flask!'
还可以在路由里面定义动态部分,如:
@app.route('/<name>')
def hello(name):
return'Hello ' + name + ' !'
尖括号中的内容就是动态部分,任何能匹配静态部分的URL都会映射到这个路由上。路由中的动态部分默认使用字符串,不过也可使用类型定义。例如,路由 /user/<int:id>只会匹配动态片段id为整数的URL。Flask 支持在路由中使用int、float和path类型。(path类型也是字符串,但不把斜线视作分隔符,而将其当作动态片段的一部分)调用视图函数时,Flask会将动态部分作为参数传入函数。
注:修饰器是Python语言的标准特性,可以使用不同的方式修改函数的行为。惯常用法是使用修饰器把函数注册为事件的处理程序
(3)启动服务器
if __name__ == '__main__':
app.run(debug=True)
(4)把前面几节的拼起来就是一个完整的flask程序了
from flask import Flask
app = Flask(__name__)
@app.route('/')
def index():
return'Hello Flask!'
@app.route('/<name>')
def hello(name):
return'Hello ' + name + ' !'
if __name__ == '__main__':
app.run(debug=True)
运行后如下:
浏览器访问http://127.0.0.1:5000/
浏览器访问http://127.0.0.1:5000/whu
使用sqlite3:
sqlite3是一款python自带的轻量级数据库,支持传统的SQL语法。
(1)建表
注意Order为SQL的关键字,所以建表的时候表名不能是Order,但是数据库文件名字可以是Order
import sqlite3
conn = sqlite3.connect('Order.db');
c = conn.cursor();
print("Openeddatabase successfully");
# 创建表(表名Order1)
sql = '''CREATE TABLE Order1
(ID integer PRIMARY KEY autoincrement,
name TEXT NOT NULL,
serialNumber TEXT NOT NULL,
creatTime TEXT NOT NULL,
count integer NOT NULL,
isFinish integer
);'''
c.execute(sql)
print ("Tablecreated successfully");
conn.commit()
conn.close()
创建完之后用软件(DB Browser forSQLite)打开Order.db,可以看到成功创建了表Order1
(2)增删改查(CRUD:creat,retrieve,update,delete)
增(关键词insert):
#插入新的数据
sql = '''insert into Order1
(name, serialNumber, creatTime,count, isFinish)
values(?, ?, ?, ?, ?)'''
c.execute(sql,(u'测试订单', 'test666', '2018-4-2', 1000, False))
conn.commit()
print ("Records created successfully");
删(关键词delete):
#删除数据
sql = "delete from Order1 where ID = 2"
c.execute(sql)
print('Delete recordsuccessfully')
conn.commit()
改(关键词update):
#更新数据
sql = "update Order1 set isFinish = ? where ID = ?"
c.execute(sql,('true',1))
print('Update record succesfully')
conn.commit()
查(关键词select):
#查询并打印整张表
c.execute('''select * from Order1 order by creatTime''')
result =c.fetchall()
for column in result:
print(column)
conn.close()
select*表示把整张表全部查询出来
关于更多SQLite3的知识可以:点击此处
------------------------------------------------------------------------------------------------------------------
至此,服务器端代码的相关知识和内容就叙述完毕了,大家可以根据自己的需要进行修改。下一篇博客将讲述如何将写好的服务器端代码部署到腾讯云服务器上面。敬请关注