目的:
1、查詢結果

2、表結構
過程:
1、編寫 函數(即存儲過程)
PS:查詢界面運作之後會在Navcat中的函數生成名為:getChildrenOrg 的函數
CREATE FUNCTION getChildrenOrg (orgid INT) RETURNS VARCHAR (4000)
BEGIN
DECLARE oTemp VARCHAR (4000);
DECLARE oTempChild VARCHAR (4000);
SET oTemp = '';
SET oTempChild = CAST(orgid AS CHAR);
WHILE oTempChild IS NOT NULL DO
SET oTemp = CONCAT(oTemp, ',', oTempChild);
SELECT
-- DeptID為主鍵,根據自己的表字段修改
GROUP_CONCAT(DeptID) INTO oTempChild
FROM
-- 表名
base_dept
WHERE
-- FatherID為上級ID,根據自己的表字段修改
FIND_IN_SET(FatherID, oTempChild) > 0;
END
WHILE;
RETURN oTemp;
END
2、 調用方法
-- getChildrenOrg (2) :此為過程1中的生成的存儲過程; (2)是輸出本級的ID,向下查詢部門
SELECT * FROM base_dept WHERE FIND_IN_SET(DeptID,getChildrenOrg (2))
3、SQLAlchemy中調用
①、在建立連接配接 檔案中建立cursor
db_url = 'mysql+pymysql://root:@127.0.0.1:3307/tornado9'
# py3 表生成模型
# sqlacodegen mysql+pymysql://root:@127.0.0.1:3307/la80?charset=utf8 --outfile la80_models.py
# 建立資料庫引擎連結
engine = create_engine(db_url)
# 建立cursor
conn = engine.raw_connection()
cursor = conn.cursor()
②、在視圖檔案中導包
from Tornado9.Mytorndo.utils.conn import session_maker, cursor
class IndexHandler(tornado.web.RequestHandler):
def get(self):
sql = 'SELECT * FROM base_dept WHERE FIND_IN_SET(DeptID,getChildrenOrg (2))'
cursor.execute(sql)
res_data = cursor.fetchall()
res = res_data
print(res) # ((2, '00002', '财務部', None, 1), (3, '00003', '生産部', None, 2))
self.write('hello!')
PS:此測試檔案在Tornado9檔案夾中