我的应用底层数据库用的是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上遇到的问题的更多相关文章

  1. 基于flask+gunicorn+nginx来部署web App

    基于flask+gunicorn&&nginx来部署web App WSGI协议 Web框架致力于如何生成HTML代码,而Web服务器用于处理和响应HTTP请求.Web框架和Web服务 ...

  2. 树莓派搭建基于flask的web服务器-通过移动端控制LED

    1.概述 在局域网内,基于flask搭建web服务,从而可以使用移动客户端访问该web服务.由于是flask新手,所以本次实现的web服务功能较为简单,即控制LED灯的开/关及闪烁. 2.准备工作 2 ...

  3. 基于Flask的Web应用程序插件式结构开发

    事实上,很多应用程序基于插件式结构开发,可以很方便了扩展软件的功能,并且这些功能完全可以依托于第三方开发者,只要提供好接口和完备文档,比如wordpress.谷歌火狐浏览器等. Python这样的动态 ...

  4. 基于HT for Web矢量实现HTML5文件上传进度条

    在HTML中,在文件上传的过程中,很多情况都是没有任何的提示,这在体验上很不好,用户都不知道到时有没有在上传.上传成功了没有,所以今天给大家介绍的内容是通过HT for Web矢量来实现HTML5文件 ...

  5. 如何将Java Web项目部署到服务器上

    转自:(此处更详细)http://blog.csdn.net/gulu_gulu_jp/article/details/50994003 一.前言 前面我们已经尝过了在云服务器上部署代码的甜头了,现在 ...

  6. 把web项目部署到tomcat上

    首先在服务器搭建JDK环境:https://www.cnblogs.com/lb809663396/p/5855877.html 然后把tomcat文件包复制到服务器上,访问http://localh ...

  7. 当java web项目部署到服务器上时,无法将图片等媒体文件保存到服务器的最终奥义

    今天,我在部署web项目至云服务器上(Tomcat8.0)时,突然发现我的应用,无法上传图片,视频等多媒体文件了,一再检查自己的代码逻辑没有问题之后,逐一排查,首先想到的就是看一下控制台打印的日志,日 ...

  8. 基于Flask 实现Web微信登陆

    网页版微信登陆网址 https://login.wx.qq.com/ 获取微信登陆的二维码 在浏览器中访问登陆接口 https://login.wx.qq.com/ 我们查找二维码的图片可以看到 其中 ...

  9. 基于Flask开发web微信

    1. 获取二维码 app.py import re import time import requests from flask import Flask,render_template app = ...

随机推荐

  1. CodeUI Test:UIMap录制文件分析一

    UIMap文件是Coded UI Test的核心文件,它分为三个文件. 1.UIMap.uitest 这是xml文件,里面描述了所有需要操作的目标控件以及进行操作的动作等. 2.UIMap.Desig ...

  2. 用FileInputStream读取数据,计算机如何实现将两个字节拼接成中文的?

    package itcast_02; import java.util.Arrays; /* * 在计算机中如何识别将连个字节转换为中文的呢? * 在计算机中中文的存储为两个字节 : * 第一个字节 ...

  3. Webpack、Browserify和Gulp

    https://www.zhihu.com/question/37020798 https://www.zhihu.com/question/35479764

  4. 统计学习中感知机的C++代码

    感知机是古老的统计学习方法,主要应用于二类线性可分数据,策略是在给定的超平面上对误差点进行纠正,从而保证所有的点都是正确可分的. 用到的方法是随机梯度下降法,由于是线性可分的,可保证最终在有限步内收敛 ...

  5. Alpha版本十天冲刺--Day6

    会议总结 队员 今天完成 遇到的问题 明天要做 感想 鲍亮 获取帖子接口,url图片解析 无 获取帖子详情接口,发帖接口 这两天都是白天睡大觉,晚上敲代码,感觉得调一下作息了,假期更加爱赖床了,还得继 ...

  6. jQurey Plugin

    ; (function ($, window, document, undefined) { "use strict"; var defaults = { name: " ...

  7. 关于启用 HTTPS 的一些经验分享(一)

    转载: 关于启用 HTTPS 的一些经验分享(一) 随着国内网络环境的持续恶化,各种篡改和劫持层出不穷,越来越多的网站选择了全站 HTTPS.就在今天,免费提供证书服务的 Let's Encrypt ...

  8.  空格用法

    记录一下,空格的转义字符分为如下几种:平时一般用的是 1.  &160#;不断行的空白(1个字符宽度)2.  &8194#;半个空白(1个字符宽度)3.  &8195#;一个空 ...

  9. Table 'performance_schema.session_variables' doesn't exist

    出现标题所示错误时设置如下参数可以解决!set @@global.show_compatibility_56=ON;

  10. 使用requestAnimationFrame做动画效果二

    3月是个好日子,渐渐地开始忙起来了,我做事还是不够细心,加上感冒,没精神,今天差点又出事了,做过的事情还是要检查一遍才行,哎呀. 使用requestAnimationFrame做动画,我做了很久,终于 ...