基于Flask的Web应用部署到SAE上遇到的问题
我的应用底层数据库用的是MySQL,利用Flask-SQLALchemy实现接口操作。我遇到的问题是:
在我把代码部署到SAE上后,当数据向数据库insert的时候总是出现“2006,MySQL has gone away”的问题。
查了官方文档和Google了很多,首先是用如下方法去做的:
1、SQLAlchemy_POOL_SIZE = 10
2、每次操作之后关闭数据库
def init_after_handlers(app):
@app.teardown_appcontext
def teardown_request(exception=None):
if hasattr(g, 'db'):
g.db.close()
#db2 = getattr(g, 'db2', None)
if db is not None:
db.session.remove()
但是上面的步骤对我却不起作用,真的是不应该啊!!!!!
后来又查了一下,说可以用ping,所以我此时就抛弃了利用SQLALchemy操作该部分数据,而改为直接使用MySQLdb。利用ping的方法就是不断的进行新连接。
def _connect(self,dbname):
tar = self.config[dbname]
self.con = MySQLdb.connect(host=tar['host'],
user=tar['user'],
port=tar['port'],
passwd=tar['passwd'],
charset=tar['charset'],
db=tar['db'])
self.con.ping(True)
self.cursor = self.con.cursor(cursorclass=MySQLdb.cursors.DictCursor)
在进行插入时:
def insert_by_dic(self,table,data):
keys = data.keys()
values = []
keystr = ','.join('`' + x + '`' for x in keys)
for key in keys:
values.append(data[key])
valstr = ','.join( "'" + x + "'" if isinstance(x,unicode) \
else "'" + str(x).decode('utf8') +"'" for x in values )
sql = "INSERT INTO %s (%s) VALUES (%s) " % (table,keystr,valstr)
self.cursor.execute(sql)
self.con.commit()
def insert_list_dic(self,data,table):
for item in data:
try:
self.insert_by_dic(table, item)
except MySQLdb.OperationalError:
self._connect(dbname)
self.insert_by_dic(table, item)
continue
except MySQLdb.IntegrityError,e:
print str(e)
continue
进行如上代码后,已经完全解决了2006的问题。
其实现在又遇到了一个问题,那就是我之前的分页是在后台实现的,即在model中利用pagnite实现的,但利用MySQLdb之后,实现不了,我还得学会在前端将数据进行分页。
未完待续..........................
基于Flask的Web应用部署到SAE上遇到的问题的更多相关文章
- 基于flask+gunicorn+nginx来部署web App
基于flask+gunicorn&&nginx来部署web App WSGI协议 Web框架致力于如何生成HTML代码,而Web服务器用于处理和响应HTTP请求.Web框架和Web服务 ...
- 树莓派搭建基于flask的web服务器-通过移动端控制LED
1.概述 在局域网内,基于flask搭建web服务,从而可以使用移动客户端访问该web服务.由于是flask新手,所以本次实现的web服务功能较为简单,即控制LED灯的开/关及闪烁. 2.准备工作 2 ...
- 基于Flask的Web应用程序插件式结构开发
事实上,很多应用程序基于插件式结构开发,可以很方便了扩展软件的功能,并且这些功能完全可以依托于第三方开发者,只要提供好接口和完备文档,比如wordpress.谷歌火狐浏览器等. Python这样的动态 ...
- 基于HT for Web矢量实现HTML5文件上传进度条
在HTML中,在文件上传的过程中,很多情况都是没有任何的提示,这在体验上很不好,用户都不知道到时有没有在上传.上传成功了没有,所以今天给大家介绍的内容是通过HT for Web矢量来实现HTML5文件 ...
- 如何将Java Web项目部署到服务器上
转自:(此处更详细)http://blog.csdn.net/gulu_gulu_jp/article/details/50994003 一.前言 前面我们已经尝过了在云服务器上部署代码的甜头了,现在 ...
- 把web项目部署到tomcat上
首先在服务器搭建JDK环境:https://www.cnblogs.com/lb809663396/p/5855877.html 然后把tomcat文件包复制到服务器上,访问http://localh ...
- 当java web项目部署到服务器上时,无法将图片等媒体文件保存到服务器的最终奥义
今天,我在部署web项目至云服务器上(Tomcat8.0)时,突然发现我的应用,无法上传图片,视频等多媒体文件了,一再检查自己的代码逻辑没有问题之后,逐一排查,首先想到的就是看一下控制台打印的日志,日 ...
- 基于Flask 实现Web微信登陆
网页版微信登陆网址 https://login.wx.qq.com/ 获取微信登陆的二维码 在浏览器中访问登陆接口 https://login.wx.qq.com/ 我们查找二维码的图片可以看到 其中 ...
- 基于Flask开发web微信
1. 获取二维码 app.py import re import time import requests from flask import Flask,render_template app = ...
随机推荐
- 过目不忘JS正则表达式
正则表达式,有木有人像我一样,学了好几遍却还是很懵圈,学的时候老明白了,学完了忘光了.好吧,其实还是练的不够,所谓温故而知新,可以为师矣,今天就随我来复习一下这傲娇的正则表达式吧. 为啥要有正则表达式 ...
- 浅谈html5及其新特性
什么是 HTML5? HTML5 将成为 HTML.XHTML 以及 HTML DOM 的新标准. HTML 的上一个版本诞生于 1999 年.自从那以后,Web 世界已经经历了巨变. HTML5 仍 ...
- linux 内核升级
LINUX 内核升级 linux 内核官网 https://www.kernel.org/ POST BIOS(boot sequence) 所选择的启动设备次序的MBR中是否有引导程序, ----& ...
- CSS关于子元素设置了float属性后父元素高度为0的解释和解决方法
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/stri ...
- VB.net的特殊语法(区别于C#.NET)
1:引入命名空间(Imports) Imports System.Exception Imports System.Data.SqlClient Imports System.Security.Cry ...
- 上传文件创建目录 mkdir
mkdir($save_path,0777,true); $save_path :文件名 0777:权限 .windows 下面可以忽略 当创建多级文件目录的时候一定要加上 true
- OCP笔记001
2. View the Exhibit to examine the description for the SALES table. Which views can have all DML ope ...
- alter system switch logfile与alter system archive log current的区别
以前知道 ALTER SYSTEM SWITCH LOGFILE对单实例数据库或RAC中的当前实例执行日志切换, ALTER SYSTEM ARCHIVE LOG CURRENT会对数据库中的所有实例 ...
- (转)javascript 奇淫巧技44招
1.首次为变量赋值时务必使用var关键字 变量没有声明而直接赋值得话,默认会作为一个新的全局变量,要尽量避免使用全局变量. 2.使用===取代== ==和!=操作符会在需要的情况下自动转换数据类型.但 ...
- 【c#】对象转json字符串/字符串转Json对象
using Newtonsoft.Json; 一.Hashtable => Json Hashtable hash = new Hashtable(); hash.Add("key1& ...