将PC数据与在线数据同步

时间:2014-07-07 13:32:25

标签: python sql-server browser sync

我已经建立了一个在线网站,作为数据库的前端,我的客户可以在其中保存销售信息。因此,每个客户都使用自己的凭据登录在线网站,只能查看自己的销售记录。数据库以SQL Server 2008

的形式出现

其中一些客户在其PC上拥有第三方Windows工具,这些工具本身就是具有特定销售记录的数据库的前端。他们使用此工具打印收据。如果不使用工具本身,此工具附带一个Python接口,可用于更新数据库。我已经在我的PC上安装了该工具,并通过运行简单的Python脚本成功地将记录添加到该工具的数据库中。

目前,客户正在将我的网站上的手工销售信息添加到PC上的工具中。我想为他们提供一种自动执行此操作的方法。这种同步应该只在客户请求这样的同步时发生,并且实际上他们都要求它应该这样做。这是为了确保他们有机会验证信息。

我该如何解决这个问题?我应该开发一个他们在本地计算机上安装的PC应用程序,还是可以通过浏览器执行此操作?这两种解决方案都需要执行Python代码才能在PC上更新数据库,然后当然存在安全问题。

2 个答案:

答案 0 :(得分:3)

您可以打开REST API's来执行此操作。

在您描述的当前模型中,您有一个数据库,用户通过webapp与数据交互。 webapp又有两个组件,即服务器端后端和面向客户端的前端(尽管它们可能看起来像一个单独的代码库)。

目前,您的架构类似于

DB(1) <--> Webapp Backend(2) <--> Webapp Frontend(3)

您的用户在第3层进行交互,与第1层的数据进行对话

现在,在您的新模型中,用户还可以通过独立的桌面应用程序访问数据。因此,在这种情况下,PC应用程序(4)需要与您的体系结构的块2进行通信,如下所示

DB(1) <--> Webapp Backend(2) <--> Webapp Frontend(3)
                  |
                  |
            PC Desktop Application(4) <--> Local PC Database(5)

您需要模拟上面的数据访问(2)和(3)之间的关系,以及(2)和(4)。因此,您可以在(2)处为数据访问添加API支持。 API需要进行身份验证,以便只有相关用户才能访问数据。 对于身份验证,您可能需要生成用户访问令牌,或者您可以根据用户凭据进行验证。在访问令牌的情况下,您将再次需要将它们存储在数据库(1)的最后一个单独的表中,并定期过期/重新生成它们。

接下来,您可以编写一个小型python代码段,使用该代码段,桌面应用程序的最终用户可以同步其工具中的数据。必须在第4层的python中运行db updates的地方输入此代码段。基本上,此代码段将包含访问API和获取数据的代码。

注意事项:

  1. 如果该用户使用一组访问令牌获取数据,然后使用另一组凭据,获取另一组销售数据,并且两者同时存在于其本地副本5中,则会产生误导性数据组。根据您的业务案例,可能会/可能不会出现这种情况。如果确实出现这种情况,您可能还需要清除所有过去的销售数据并重新初始化为当前值。
  2. 您必须准备的另一个可能性是数据请求的大小和频率,根据这些请求可能需要增加服务器容量。

答案 1 :(得分:0)

总而言之,你有一个网站/ sql服务器应用程序。然后,您的一些用户拥有一个带有python前端的独立本地数据库。你需要桥接这两个应用程序。

您可以使用rest api公开您的sql server数据库(使用您选择的任何技术)。然后创建一个调用该api的python应用程序(通过按钮或自动调度),然后执行报告所需的python代码。

另一种方法是将所需的报告功能添加到您的网络应用中。因此,如果您查看第三方数据库和报告提供的功能并将该功能添加到您的网站中,那么就不再需要使用该第三方应用程序了。

根据提供的信息,这是您的两条路径。