ERP 建置规划-7-API开发之Python之MySQL资料库查询语法范例
今天为了要撰写一些给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,相信对于产品的严谨度会有良好的提升,当然也可以让产品的品质会更好一点! 给您参考看看啰! ^^
查看原文 >>