今天因为要提供几个开放的接口给我毕设相关的平台调用,所以又开始折腾之前在SAE上搭的Tornado应用。

之前记录过一个 如何在 SAE 上使用 Tornado,这次续上,关于在SAE里使用Tornado框架时基本的MySQL操作。因为自己刚才找了很久资料才用起来,也怪自己之前没在Tornado里面用过MySQL,所以为其他同学以后少走弯路来一个整理贴。

首先在应用控制台初始化共享型MySQL。

点击管理MySQL可以进入管理后台,标准的PHPMyAdmin。

根据 SAE官方文档 底部介绍,你可以通过以下方法获得连接数据库所需的参数。

import sae.const

sae.const.MYSQL_DB # 数据库名

sae.const.MYSQL_USER # 用户名

sae.const.MYSQL_PASS # 密码

sae.const.MYSQL_HOST # 主库域名(可读写)

sae.const.MYSQL_PORT # 端口,类型为,请根据框架要求自行转换为int

sae.const.MYSQL_HOST_S # 从库域名(只读)

注意:需要将sae.const.MYSQL_PORT转成int型。

SAE Python内置了MySQLdb模块,用法如下:

1 导入sae常量和MySQLdb模块:

import sae.const

import MySQLdb

2 连接数据库:

db=MySQLdb.connect(host=sae.const.MYSQL_HOST,port=int(sae.const.MYSQL_PORT ),user=sae.const.MYSQL_USER ,passwd=sae.const.MYSQL_PASS ,db=sae.const.MYSQL_DB)

3 获取cursor对象,用于执行命令:

cursor = db.cursor() #默认类型,返回结果如:(u'ccc', 33L)

cursor = db.cursor(cursorclass=MySQLdb.cursors.DictCursor) #返回字典形式,如:{'name': u'ccc', 'created': 33L}

4 执行SQL语句:

cursor.execute(“select * from table_name where what = ‘what’”) #模拟数据: [{‘name’: ’chengkang’, ‘gender’: ‘male’},{‘name’: ’xiaoli’, ‘gender’: ’female’}]

5 输出返回结果:

result = cursor.fetchone()

if result is None:

print “None”

else:

print “%s”%result #{‘name’: ’chengkang’, ‘gender’: ‘male’}

print result[‘name’] #chengkang

result = cursor.fetchall()

for row in result:

print “%s”%row #{‘name’: ’chengkang’, ‘gender’: ‘male’}

for col in row:

print “%s”%col #chengkangmale

以上是最基本的使用。反正我暂时就用到这些:)。一些细节的问题之后再来吧。

参考了这个博客。

下面附上我自己试验时候的代码,可能会有一些参考价值。

class TestHandler(tornado.web.RequestHandler):

def get(self):

premise = self.get_argument('premise', "no_data")

consequence = self.get_argument('consequence', "no_data")

try:

import sae.const

import MySQLdb

try:

db=MySQLdb.connect(host=sae.const.MYSQL_HOST,port=int(sae.const.MYSQL_PORT ),user=sae.const.MYSQL_USER ,passwd=sae.const.MYSQL_PASS ,db=sae.const.MYSQL_DB)

cursor = db.cursor(cursorclass=MySQLdb.cursors.DictCursor)

#cursor = db.cursor()

try:

cursor.execute("SELECT * FROM immediate_consequences")

one = cursor.fetchall()

#cursor.execute("SELECT * FROM immediate_consequences WHERE premise='"+premise+"' and consequence='"+consequence+"'")

#one = cursor.fetchone()

a = ""

#for row in cursor.fetchall():

# for item in row:

# a += item

if one is None:

self.write("Not in the database")

else:

#self.write(one['premise']+one['consequence'])

for item in one:

self.write("Yes%s"%item)

#self.write(a.fetchone())

#self.write("premise:",one['premise']," and consequence:",one['consequence'])

except:

self.write(“wtf”)

cursor.close()

except:

self.write("database connection error")

except:

self.write("Hello Tornado")

以上。

sae python连接mysql_SAE Tornado 应用连接并使用 Mysql相关推荐

  1. sae mysql 跨应用授权_SAE Tornado 应用连接并使用 Mysql

    今天因为要提供几个开放的接口给我毕设相关的平台调用,所以又开始折腾之前在SAE上搭的Tornado应用. 之前记录过一个 如何在 SAE 上使用 Tornado,这次续上,关于在SAE里使用Torna ...

  2. python mysql ssh隧道_在python中使用ssh隧道连接mysql

    通常为了保证数据库安全,不会允许直接连接数据库,而是需要通过SSH隧道去连接服务器背后的数据库: 今天我在用Python连接远程的MySQL时,直连遇到了无法连接的情况,使用了SSH隧道之后解决了问题 ...

  3. python连接sql数据库_python连接SQL数据库

    前言 上次通过学习,懂得了如何通过不同的对象来定位页面的元素(id,class_name,tag_name,xpath,css等),可以实现模拟点击的功能.当然,这只是初期的web自动化的一点小成绩. ...

  4. python后台架构Django教程——连接读写mysql数据库

    全栈工程师开发手册 (作者:栾鹏) python教程全解 本文衔接至python后台架构Django开发全解. 有其他问题请先阅读:http://blog.csdn.net/luanpeng82548 ...

  5. python oracle连接池_python - DBUtils 连接池减少oracle数据库的连接数

    问题: 接到需求,告知项目的oracle连接次数过多,对系统造成太过大的负担,要求减少oracle数据库的连接次数 分析: 仔细分析代码以后,发现产生问题的原因,在于之前要求提升oracle监控的监控 ...

  6. 如何基于Python写一个TCP反向连接后门

    0x0 介绍 在Linux系统做未授权测试,我们须准备一个安全的渗透环境,通常第一件事就是安装虚拟机.且在攻击阶段中还需要对受害系统进行控制.常见的后门大多数是利用Metasploit生成,而目前反病 ...

  7. 使用Python进行ADSL宽带拨号连接等操作

    使用Python进行ADSL宽带拨号连接等操作 1.导入相关包 import time, os from datetime import datetime 2.函数版 # 连接ADSL def con ...

  8. python使用加号运算符可以连接两个字符串_如何在Python连接两个字符串

    如何在Python连接两个字符串 Python字符串是Unicode字符的集合. Python提供了许多内置函数来进行字符串操作.字符串串联是一个字符串与另一字符串合并时的过程.可以通过以下方式完成. ...

  9. mysql python插件_基于SQLAlchemy连接mysql库(pymsql插件)

    # -*- coding:UTF -8-*-import osimport pandas as pd# 检查是否有pymysql这个包存在import pymysql# SQLAlchemy本身无法操 ...

最新文章

  1. STM32 基础系列教程 47 - MD5
  2. 学习笔记(二十)—— 网络编程
  3. 【Go语言】使用 http 库进行简单的接口测试
  4. 神经网络可视化,真的很像神经元!
  5. JavaScript 的内部字符编码是 UCS-2 还是 UTF-16
  6. kfc流程管理炸薯条几秒_炸薯条成为数据科学的最后前沿
  7. PHP文件下载过滤类
  8. Linux kernel 4.x中的min和max宏
  9. Java编程中忽略这些细节,Bug肯定找上你
  10. HDU 2544 最短路 Dijkstra
  11. 赤手空拳如何成就百万富翁? 赤手空拳如何成就百万富翁?——网络营销之七(第四招:百度文库+)...
  12. 笔趣阁小说TXT采集软件工具
  13. tomcat7解压版安装过程
  14. (使用python+adb)能实现王者荣耀自动刷金币?
  15. Filco圣手二代键盘蓝牙连接方法
  16. 这篇文章能让你吃透SVG
  17. 更改linux键盘布局,无法更改Centos 7上的键盘布局
  18. xtu 1397 Patchouli的金字塔
  19. SQL Server中字段、记录、表、列、行、属性、元组、主键、外键的含义
  20. 中国微光泽仪市场趋势报告、技术动态创新及市场预测

热门文章

  1. 使用OpenVINO加速Pytorch表情识别模型
  2. Tensorflow + OpenCV4 安全帽检测模型训练与推理
  3. Postgresql 物理热备份 -- PITR 时间点恢复(Point In Time Recovery)
  4. ★移动机器人 激光 构建地图 定位
  5. 22.加密与安全相关,证书申请CA(gpg,openssl)
  6. vscode中使用js的console配置 - mac
  7. php通过http请求发送数组
  8. vue 结合 echarts
  9. 在活动目录中,转移和占用操作主机角色(占用)
  10. 3-unit10 iptables