SAE Tornado 應用連線並使用 Mysql

2021-09-19 11:02:44 字數 3250 閱讀 2549

今天因為要提供幾個開放的介面給我畢設相關的平台呼叫,所以又開始折騰之前在sae上搭的tornado應用。

之前記錄過乙個 如何在 sae 上使用 tornado,這次續上,關於在sae裡使用tornado框架時基本的mysql操作。因為自己剛才找了很久資料才用起來,也怪自己之前沒在tornado裡面用過mysql,所以為其他同學以後少走彎路來乙個整理貼。

首先在應用控制台初始化共享型mysql

根據 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) #返回字典形式,如:

4 執行sql語句:

cursor.execute(「select * from table_name where what = 『what』」) #模擬資料: [,]
5 輸出返回結果:

result = cursor.fetchone()

if result is none:

print 「none」

else:

print 「%s」%result #

print result[『name』] #chengkang

result = cursor.fetchall()

for row in result:

print 「%s」%row #

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")

以上。

Android Wifi自動開啟並連線

wifi自動開啟並連線到指定的熱點 do catch interruptedexception e while madmin.iswificonnect 判斷wifi是否連線成功連線指定wifi熱點 public void connectwifi string ssid,string passwor...

Django配置並連線MySQL

sudo apt get install mysql server設定好你的root密碼,假設root密碼是abcd。進入mysql的shell 需要輸入root密碼abcd mysql u root p為你的django專案新建乙個資料庫 create database django db 使用 ...

並查集 冗餘連線

思路 記錄1到n的每個數的根,因為如果有環,導致環相連的 u,v 一定有相同的root,我們可以理解為是乙個節點的兩個分支,通過 u,v 被連起來了,既然他們是乙個節點的兩個分支,那麼他們一定有相同的root,所以直接移除 u,v 就好啦。class solution def findredunda...