繁体   English   中英

使用mysql加载文件后sqlalchemy查询刷新问题

[英]sqlalchemy query refresh issue after use mysql load file

我使用sqlalchemy作为我的orm,我通过子进程执行mysqlimport cmd,并且在执行之前和之后我查询db记录,我使用statistics_db方法,但是从csv导入后记录计数结果没有增加,我认为这是一个sqlalchemy问题,如何解决这个问题?,谢谢

def statistics_db(f):
    @wraps(f)
    def wrapper(*args,**args2):
        q=Product.query.filter("site='%s'"%g_site_show_name)
        pre=q.count()
        print "当前数据库中共有%s条关于%s的记录"%(q.count(),g_site_show_name)
        time.sleep(3)
        back = f(*args, **args2)
        post=q.count()
        count=pre-post
        description="减少" if count>0 else "增加"
        print "当前数据库中共有%s条关于%s的记录"%(q.count(),g_site_show_name)
        print "%s了%s条记录"%(description,abs(count))
        return back
    return wrapper

@cost_time
@statistics_db
def batch_csv2db():
    "将csv文件中的数据批量导入到数据库中"
    if not os.path.exists(g_xml2csv_file):
        print "找到压缩文件,从中读取csv文件"
        dirname,filename=os.path.split(src)
        base,ext=os.path.splitext(filename)
        tar_filepath=os.path.join(dirname,base+".tar.gz")
        uncompress(tar_filepath)
    if not os.path.exists(g_xml2csv_file):
        print "未找到可用的csv文件!"
        return
    cmd="""mysqlimport -u root --password='bin' -L -v --columns='name,price,productid,site,link,smallImage,bigImage,description,createdOn,modifiedOn,size,weight,wrap,material,packagingCount,stock,location,popularity,inStock,categories' --fields-terminated-by=',' --fields-enclosed-by='"' --fields-escaped-by='\\' --lines-terminated-by='\n' search """+g_xml2csv_file
    args=shlex.split(cmd)
    p=subprocess.Popen(args)
    stdout, stderr = p.communicate()
    print stdout,stderr

您必须在调用count()后调用commit() / rollback()结束事务,或者更改隔离级别 否则,您将看不到其他连接所做的更改。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM