在SQLAlchemy Core中执行多个独立的语句?

时间:2016-05-18 00:46:43

标签: python mysql sqlalchemy

我正在使用SQLAlchemy Core运行一些独立的语句。 这些陈述用于分隔表格和不相关的。因此,我不能使用标准的sql_conn.execute(query1) sql_conn.execute(query2) 和多个传递的词典。现在,我这样做:

def plot_stuff(inputs, outputs, losses, net_func, n_hidden):
fig,axes = plt.subplots(1,2,figsize=(12,6))

    axes[0].plot(np.arange(losses.shape[0])+1, losses)
    axes[0].set_xlabel('iteration')
    axes[0].set_ylabel('loss')
    axes[0].set_xscale('log')
    axes[0].set_yscale('log')

    x,y = np.mgrid[inputs[:,0].min():inputs[:,0].max():51j, inputs[:,1].min():inputs[:,1].max():51j]
    z = net_func( np.c_[x.flatten(), y.flatten()] ).reshape(x.shape)

    axes[1].contourf(x,y,z, cmap=plt.cm.RdBu, alpha=0.6)
    axes[1].plot(inputs[outputs==0,0], inputs[outputs==0,1], 'or') 
    axes[1].plot(inputs[outputs==1,0], inputs[outputs==1,1], 'sb') 
    axes[1].set_title('Percent missclassified: %0.2f%%' % (((net_func(inputs)>0.5) != outputs.astype(np.bool)).mean()*100))

    fig.suptitle('Shallow net with %d hidden units'%n_hidden)
    plt.show()

if __name__=='__main__':
    n_hidden = 40
    inputs, outputs = gen_data(n_samples_per_class=100)
    losses, net_func = train_neural_network(inputs=inputs, outputs=outputs, n_hidden=n_hidden, n_iters=int(2000), learning_rate=0.1)
    plot_stuff(inputs, outputs, losses, net_func, n_hidden)

有什么方法可以一次性运行这些而不需要两次来回分配?我使用的是MySQL 5.7和Python 2.7.11。

1 个答案:

答案 0 :(得分:1)

一次运行两个查询既不明智也不实际。

通过" SQL注入"

来让黑客以另一种方式做出讨厌的事情是不明智的。

另一方面,它是可能的,但不一定是实用的。您将创建一个存储过程,其中包含任意数量的相关(或不相关)查询。然后CALL那个程序。有些事情可能使其变得不切实际:

  • 获取数据的唯一方法是通过有限数量的标量参数。
  • 输出以多个结果集形式返回;你需要用不同的代码来看看发生了什么。

如果您与MySQL服务器在同一台计算机上,则往返延迟无关紧要。即使两台服务器位于同一数据中心,通常也可以忽略它。当客户端和服务器长距离分开时,延迟变得很重要。对于跨大西洋延迟,我们谈论超过100毫秒。巴西到中国的时间约为250毫秒。 (很高兴我们没有住在木星上。)