小编d51*_*512的帖子

MySQLdb每个连接有多个事务

是否可以将单个MySQLdb连接用于多个事务而不关闭它们之间的连接?换句话说,这样的事情:

conn = MySQLdb.connect(host="1.2.3.4", port=1234, user="root", passwd="x", db="test")

for i in range(10):
    try:
        cur = conn.cursor()
        query = "DELETE FROM SomeTable WHERE ID = %d" % i
        cur.execute(query)
        cur.close()
        conn.commit()

    except Exception:
        conn.rollback()

conn.close()
Run Code Online (Sandbox Code Playgroud)

它似乎工作正常,但我只是想仔细检查.

python mysql database database-connection mysql-python

7
推荐指数
1
解决办法
1万
查看次数

扭曲的adbapi中的交易支持

我试图弄清楚扭曲的adbapi模块中的事务是如何工作的.我目前正在使用runOperation()来执行INSERT和UPDATE语句.我将链接到下面的文档使它看起来支持事务,但它似乎并不像我想要的那样.这是一些示例代码(它在旋风web服务器中运行,但希望这不相关):

class OperationHandler(cyclone.web.RequestHandler):
    @cyclone.web.asynchronous
    def get(self, *args, **kwargs):
        d = conn.runOperation("INSERT INTO Table1 (Field1, Field2) VALUES ('a', 'b')")
        d.addCallback(self.next1)

    def next1(self, rows):
        d = conn.runOperation("UPDATE Table1 SET Field1 = 'c'")
        d.addCallback(self.next2)

    def next2(self, rows):
        raise Exception("rollback")
        self.finish("done")
Run Code Online (Sandbox Code Playgroud)

在这种情况下,即使在最后一个回调中引发异常,也会执行INSERT和UPDATE语句.不是我想要的.

我尝试转换使用runInteraction()方法,但我不确定我是否正确执行.

class InteractionHandler(cyclone.web.RequestHandler):
    @cyclone.web.asynchronous
    def get(self, *args, **kwargs):
        d = conn.runInteraction(self.someTransaction)
        d.addCallback(self.done)

    def someTransaction(self, txn):
        txn.execute("INSERT INTO Table1 (Field1, Field2) VALUES ('a', 'b')")
        txn.execute("UPDATE Table1 SET Field1 = 'c'")
        txn.execute("UPDATE Table1 SET Field1 = 'd'")

        raise Exception("rollback")

    def done(self, rows):
        print rows …
Run Code Online (Sandbox Code Playgroud)

python transactions twisted

6
推荐指数
1
解决办法
2082
查看次数

与多个开发人员签署代码

因此,我正在与启用了推送通知的iOS应用程序上的其他一些开发人员合作.我们有一个支持推送的配置文件,我们每个人都有自己的开发人员证书,用于签署代码.根据我的理解,所有标准的东西.

我们遇到的问题是,当您想要在手机上运行应用程序时,Xcode需要您在项目和/或目标设置(在代码签名标识下)中选择开发证书.如果我选择我的开发证书并检查更改为git,那么它将不适用于任何其他人的开发环境,因为他们的钥匙串中没有我的证书.所以每个人都在不断更改项目文件,以便与他们的证书一起使用.

有没有办法解决这个问题?我意识到有自动配置文件选择选项,但这不适用于推送通知.如果您尝试,则会收到错误消息

Failed to obtain push notification token: Error Domain=NSCocoaErrorDomain Code=3000
"no valid 'aps-environment' entitlement string found for application"
Run Code Online (Sandbox Code Playgroud)

当手机试图注册接收其推送令牌时.

当然这已经解决了.这是如何运作的?

certificate push-notification ios

6
推荐指数
1
解决办法
1426
查看次数

处理快递中的异常

我无法理解如何处理看起来像是快递的一个非常基本的方面.如果我有一些代码在异步回调中抛出异常,我就无法捕获该异常,因为在回调运行时try/catch块不再在范围内.在这些情况下,浏览器将挂起,直到它最终放弃,表明服务器没有响应.这是一个非常糟糕的用户体验.我宁愿能够立即向客户端返回500错误.默认的快速错误处理程序显然不处理这种情况.以下是一些示例代码:

var express = require("express");

var app = express();
app.use(app.router);
//express error handler (never called)
app.use(function(err, req, res, next) {
    console.log(err);
    res.send(500);
});

app.get("/test", function(req, res, next) {
    require("fs").readFile("/some/file", function(err, data) {
        a.b(); //blow up
    });
});

app.listen(8888);
Run Code Online (Sandbox Code Playgroud)

在上面的代码中,行ab()抛出"ReferenceError:a is not defined"异常.永远不会调用定义的错误处理程序.请注意,fs.readFile()返回的错误对象在这种情况下为null,因为文件已正确读取.错误是异步处理程序中的代码.

我已经读过这篇关于使用node的uncaughtExpception的文章,但文档说不使用该方法.即使我确实使用过它,我如何将500响应发送回用户?我不再使用快速响应对象了.

那么你如何处理这种情况?

exception node.js express

6
推荐指数
2
解决办法
5736
查看次数

在React JS中切换组件

我想用2个组件创建一个简单的流程.第一个组件被渲染,我点击它上面的一个按钮,这个动作渲染第二个组件.单击第二个组件中的按钮,它应切换回第一个组件,但发生错误:

警告:React.createElement:type不应为null,undefined,boolean或number.它应该是一个字符串(对于DOM元素)或一个ReactClass(对于复合组件).检查exports.warning @ react.js 的render方法 :20728ReactElementValidator.createElement @ react.js:9853t.exports.React.createClass.render @ bundle.js:1ReactCompositeComponentMixin._renderValidatedComponentWithoutOwnerOrContext @ react.js:6330ReactCompositeComponentMixin._renderValidatedComponent @ react.js: 6350wrapper @ react.js:12868ReactCompositeComponentMixin._updateRenderedComponent @ react.js:6303ReactCompositeComponentMixin._performComponentUpdate @ react.js:6287ReactCompositeComponentMixin.updateComponent @ react.js:6216wrapper @ react.js:12868ReactCompositeComponentMixin.performUpdateIfNecessary @ react.js:6164ReactReconciler.performUpdateIfNecessary @反应. js:13667runBatchedUpdates @ react.js:15356Mixin.perform @ react.js:17245Mixin.perform @ react.js:17245assign.perform @ react.js:15313flushBatchedUpdates @ react.js:15374wrapper @ react.js:12868Mixin.closeAll @ react. js:17311Mixin.perform @ react.js:17258ReactDefaultBatchingStrategy.batchedUpdates @ react.js:8842batchedUpdat es @ react.js:15321ReactEventListener.dispatchEvent @ react.js:10336 react.js:20250

未捕获错误:不变违规:元素类型无效:期望一个字符串(对于内置组件)或一个类/函数(对于复合组件)但得到:object.检查exports.invariant @ react.js 的render方法 :20250instantiateReactComponent @ react.js:18268ReactCompositeComponentMixin._updateRenderedComponent @ react.js:6312ReactCompositeComponentMixin._performComponentUpdate @ react.js:6287ReactCompositeComponentMixin.updateComponent @ react.js:6216wrapper @ react.js:12868ReactCompositeComponentMixin. performUpdateIfNecessary @ react.js:6164ReactReconciler.performUpdateIfNecessary @ react.js:13667runBatchedUpdates @ react.js:15356Mixin.perform …

javascript components node.js browserify reactjs

6
推荐指数
2
解决办法
2万
查看次数

按时间顺序对 Safari 调试器网络选项卡进行排序

我正在使用 Safari 调试 Web 应用程序。我希望“网络”选项卡按时间顺序显示活动,但我不知道如何以这种方式对其进行排序。我很确定它曾经默认按这种方式排序,但我不知道如何取回它。有人知道吗?

在此处输入图片说明

debugging safari

6
推荐指数
2
解决办法
1153
查看次数

Prisma 迁移状态很糟糕

我们的棱镜迁移似乎已经陷入了糟糕的状态。当我们得到最新的代码并运行

prisma migrate dev
Run Code Online (Sandbox Code Playgroud)

我们得到

迁移20210819161149_some_migration无法完全应用于影子数据库。错误代码:P3018 错误:迁移应用失败。在错误恢复之前无法应用新的迁移。详细了解如何解决生产数据库中的迁移问题: https: //pris.ly/d/migrate-resolve

迁移名称:20210819161149_some_migration

数据库错误代码:1065

源代码管理中的所有迁移都与_prisma_migrations表中的迁移匹配,所以我不确定为什么它认为20210819161149_some_migration失败。该记录logs中的列中没有任何内容。_prisma_migrations我认为发生的事情是开发人员应用了迁移,然后migration.sql在事后对其进行了更改。

无论如何,我们按照https://pris.ly/d/migrate-resolve概述的步骤进行操作,但它们似乎无法解决问题。它首先建议运行

prisma migrate resolve --rolled-back "20210819161149_some_migration"
Run Code Online (Sandbox Code Playgroud)

但这会导致

错误:P3012

迁移20210819161149_some_migration无法回滚,因为它未处于失败状态。

然后我们尝试将其标记为已应用

prisma migrate resolve --applied "20210819161149_some_migration"
Run Code Online (Sandbox Code Playgroud)

但这会导致这个错误

错误:P3008

迁移20210819161149_some_migration已按应用情况记录在数据库中。

我们也尝试过跑步

 prisma migrate deploy
Run Code Online (Sandbox Code Playgroud)

这使

在 prisma/migrations 中发现 13 个迁移警告以下迁移自应用以来已被修改:20210819161149_some_migration

但运行时仍然遇到上述相同的问题prisma migrate dev

有什么办法可以让 prisma 再次开心起来而不删除所有数据吗?

database-migration prisma

6
推荐指数
1
解决办法
1万
查看次数

实体框架对导航属性感到困惑

我正在使用Entity Framework 6.1.1,我有一个Users表和一个User_Documents表(1:很多).我已经有一个导航属性从User_DocumentsUser了事情正常工作.

public partial class User_Document
{
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.None)]
    public long User_Document_ID { get; set; }

    public long User_ID { get; set; }

    [ForeignKey("User_ID")]
    public virtual User User { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我从Users添加了一个导航属性到User_Documents

public partial class User
{
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.None)]
    public long User_ID { get; set; }

    [StringLength(50)]
    public string Username { get; set; }

    public virtual List<User_Document> Documents { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

现在我在尝试运行应用程序时遇到错误:

System.Data.Entity.ModelConfiguration.ModelValidationException:在模型生成期间检测到一个或多个验证错误:

User_Documents:Name:EntityContainer中的每个成员名称必须是唯一的.已定义名为"User_Documents"的成员.

当然有一个叫做表User_Documents但没有其他属性的表.我不确定是什么让它感到困惑.也许它将表名称为"User"和属性名称"Documents"并尝试创建一个名为"User_Documents"的东西?如果我将它重命名 …

c# entity-framework code-first

5
推荐指数
1
解决办法
504
查看次数

使用threading.Timer与asycnio

我是python的ascynio功能的新手,我有一个服务器来处理来自浏览器的websocket请求.这是它的工作原理的简化版本:

@asyncio.coroutine
def web_client_connected(self, websocket):
    self.web_client_socket = websocket

    while True:
        request = yield from self.web_client_socket.recv()
        json_val = process_request(request)
        yield from self.socket_queue.put(json_val)

@asyncio.coroutine
def push_from_web_client_json_queue(self):
    while True:
        json_val = yield from self.socket_queue.get()
        yield from self.web_client_socket.send(json_val)
Run Code Online (Sandbox Code Playgroud)

您有一个循环正在查找来自客户端的Web套接字请求.当它获得一个时,它处理它并将值放入队列.另一个循环是在该队列上查找值,当它找到一个时,它会在Web套接字上发回处理后的值.相当直接,它的工作原理.

我现在要做的是它引入一个计时器.当请求到来并且处理完毕,而不是立即将响应放回队列时,我想启动计时器1分钟.当计时器完成时,我想将响应放在队列上.

我尝试过类似的东西:

@asyncio.coroutine
def web_client_connected(self, websocket):
    self.web_client_socket = websocket

    while True:
        request = yield from self.web_client_socket.recv()
        json_val = process_request(request)
        t = threading.Timer(60, self.timer_done, json_val)
        t.start()

@asyncio.coroutine
def timer_done(self, args):
    yield from self.socket_queue.put(args)
Run Code Online (Sandbox Code Playgroud)

它不起作用.timer_done永远不会调用该方法.如果我删除了@asyncio.coroutine装饰器yield from,然后timer_done调用,但然后调用self.socket_queue.put(args)不起作用.

我想我在这里误解了一些基本的东西.你怎么做到这一点?

python multithreading asynchronous timer python-asyncio

5
推荐指数
1
解决办法
762
查看次数

如何在不硬编码高度的情况下使用 Vue.js 过渡?

我有一个 Vue 应用程序,其中的元素需要通过单击按钮来展开和折叠。需要对效果进行动画处理以使其不那么刺耳。我为此使用了标签,但除非我在 css 中对<transition>元素的属性进行硬编码,否则它不起作用。height这是行不通的,因为该元素包含动态数据并且具有不同的高度。

这是我的代码:

<template>
    <input type="button" value="Toggle" v-on:click="showIt = !showIt"/>
    <transition name="test-tran">
        <div class="test-block" v-show="showIt">
            <div v-for="item in items">{{ item }}</div>
        </div>
    </transition>
</template>

<script>
    export default {
        data() {
            return {
                showIt: false
            };
        }
    }
</script>
Run Code Online (Sandbox Code Playgroud)

这是相应的CSS:

.test-block {
    /*
    adding a height makes the transition work but
    an accurate height can't be known ahead of time

    height: 100px;
    */
}

.test-tran-enter-active {
    transition: all .5s ease;
}

.test-tran-leave-active {
    transition: …
Run Code Online (Sandbox Code Playgroud)

css transition vue.js

5
推荐指数
1
解决办法
2690
查看次数