nopcommerce 3.3 use Python to address product related
# ~*~ coding:utf-8 ~*~
#csv是一个读取csv文件的lib
import csv
#itertools生成组合和排列的lib
import itertools
#pyodbc是连接ms sql server的lib
import pyodbc
#cnxn是数据库连接 更改数据库连接方式,账号密码
cnxn = pyodbc.connect(DRIVER='{SQL Server Native Client 10.0}',SERVER='localhost',DATABASE='MicroAnalytix',UID='sa',PWD='密码')
#cursor是数据库浮标
cursor = cnxn.cursor()
#主方法
def process():
#读取csv,转换成list 更改文件存储位置
reader = list(csv.reader(open("c:/Users/Jenny/Desktop/related.csv")))
#遍历数据,并处理, tips:跳过第一行
for i in reader[1:]:
#Cn2产生组合
for j in itertools.combinations(i,2):
#处理产生的Cn2组合
recommend(j)
def recommend(j):
#产生两次相互推荐
genRec(j[0],j[1])
genRec(j[1],j[0])
def genRec(a,b):
#分别通过sku获得Product的Id
aid = getIdFromSku(a)
bid = getIdFromSku(b)
#生成写RelatedProduct表的sql语句
sql = "insert into dbo.RelatedProduct (ProductId1,ProductId2,DisplayOrder) values(%d,%d,%d)" % (aid,bid,0)
#执行sql语句
cursor.execute(sql)
#提交事务
cnxn.commit()
def getIdFromSku(a):
sql = "select Id from dbo.Product where Sku='%s'" % a
print sql
cursor.execute(sql)
row = cursor.fetchone()
if row:
return row[0]
if __name__ == "__main__":
process()