今天为了要撰写一些给rERP Ajax使用的API,所以用Python Flask写了一个restful API,虽然过去已经写过很多Python资料库处理相关的CASE,但还是上网去查查看有无最新的用法。查到以后,马上使用看看:

import datetime
import mysql.connector
cnx = mysql.connector.connect(user='scott', database='employees')
cursor = cnx.cursor()
query = ("SELECT first_name, last_name, hire_date FROM employees "
         "WHERE hire_date BETWEEN %s AND %s")

hire_start = datetime.date(1999, 1, 1)
hire_end = datetime.date(1999, 12, 31)
cursor.execute(query, (hire_start, hire_end))

for (first_name, last_name, hire_date) in cursor:
  print("{}, {} was hired on {:%d %b %Y}".format(
    last_name, first_name, hire_date))

cursor.close()
cnx.close()

所谓不用则已,一用就挂! 透过这样的格式,不停地出现MySQL语法使用错误的讯息,真的百思不解! 所以只好回归到之前的语法,用一个SQL命令字串来搞定里面所有的条件参数! 整个命令当中的字符与文法,也比较接近实际的SQL命令,不像这官方网站的范例,看起来应该加单引号却没有家的感觉很不习惯。所以,后来还是用回自己的语法,还真是条条大路通罗马呢! 呵呵~

看看呗!

##########################################################################################
### function: query the customer basic data from rERP database                         ###
##########################################################################################
def queryCustId(parSchema, parTable, parVal):
    
    print(parSchema, parTable, parVal)

    try:
        #create the database conncetion and transaction cursor
        dbCon = myCon.getMySQLConnect(parSchema)
        dbCur = myCon.getMySQLCursor(dbCon)

        #assign the data to each query parameters        
        strSQL = "SELECT name_ch, comp_id FROM %s WHERE name_ch='%s'"%(parTable, parVal)
        dbCur.execute(strSQL)        

        #------ printing out the customer data from query result
        resArray=[]
        for row in dbCur:
            resArray.append([row['name_ch'], row['comp_id']])

        print(resArray)

        #------ close all of the DB conncetion        
        dbCur.close()
        dbCon.close()
        #print('db closed!')

        return [1,resArray]
    
    except (mySQLdb.Error, mySQLdb.Warning) as e:
       dbCon.rollback
       return [0,'query data failed: '+str(e)]   

程序或是函数加上注解表头,是本人撰写程式的习惯;对于资料库的处理上,因为比较critical,所以也是需要加上exception handler会比较严谨,未来搭配exception management的管理规则,去记录所有错误的讯息,并对应适当的error code,相信对于产品的严谨度会有良好的提升,当然也可以让产品的品质会更好一点! 给您参考看看啰! ^^

查看原文 >>
相关文章