微信公众号:[技术清点]
关注可了解更多信息。问题或建议,请公众号留言;
说明
业务场景:
需要把一个nodejs做的系统里获取订单信息导入到公司内部OA系统,直接使用接口麻烦不方便,且功能太少,不同技术的人配合显得小题大做,因此直接进行脚本编写,
主要功能是从mongodb上获取订单,传输到sql server,这里主要是定时任务执行的脚本
创建连接
下面是主要连接mongodb并读取集合,并按时间段查询
# 要先导入客户才能导入订单
xwclient = pymongo.MongoClient("mongodb://xx.xx.xx.xxx:10xxx/")
xwdb = xwclient["xx_webchecker_xx"]
collist = xwdb.list_collection_names()
if "orderlogs" not in collist: # 判断 orderlogs 集合是否存在
print("集合orderlogs不存在!")
return False
orderLists = xwdb["orderlogs"]
currTime = self.beforeMinuts(7)
#currTime = parser.parse('2019-08-20T00:00:00Z')
qryOrders = {
"paySuccessTime" : {
"$gte" : currTime}, "status" : "SUCCESS","orderNo":{
"$ne":"null", "$exists":"true"} }
公共脚本
这里面使用的sql server是重复编写,可以以类文件的方式直接引入;
# sel server连接
def conn_mssql(self):
if self.__connMssql is None:
self.__connMssql = pymssql.connect(host="xx.xx.xx.xx", user="xx", password="xx", database="crm", charset="utf8",autocommit=True)
self.curMssql = self.__connMssql.cursor()
# 执行操作数据的相关sql
def execute_mssql(self, sql, data=None):
try:
self.conn_mssql()
if data is None:
self.curMssql.execute(sql)
else :
self.curMssql.execute(sql, data)
# sql server 执行无返回结果
# self.curMssql.commit() 无此方法
except Exception:
print("执行保存或更新失败.....", traceback.print_exc())
finally:
return False #self.close_mssql()
def search_mssql(self, sql):
"""执行查询sql"""
self.conn_mssql()
self.curMssql.execute(sql)
return self.curMssql.fetchall()