小编Feu*_*mel的帖子

将插入组合到一个事务Python SQLite3中

我试图在SQLite3上输入1000行,但是插入时间太长了.我知道如果将插入组合成一个事务,速度会大大提高.但是,我似乎无法让SQlite3跳过检查文件是否写在硬盘上.

这是一个样本:

if repeat != 'y':
    c.execute('INSERT INTO Hand (number, word) VALUES (null, ?)', [wordin[wordnum]])
    print wordin[wordnum]

data.commit()
Run Code Online (Sandbox Code Playgroud)

这就是我在开始时所拥有的.

data = connect('databasenew')
data.isolation_level = None
c = data.cursor()  
c.execute('begin')
Run Code Online (Sandbox Code Playgroud)

但是,它似乎没有什么区别.提高插入速度的方法将非常受欢迎.

python sqlite transactions insert

8
推荐指数
1
解决办法
8622
查看次数

Django ORM经历多个多对多关系的方式

亲爱的人们试图帮助他人,

我试图找出如何让Django为我做一个连接,而无需编写自定义SQL.

假设我有以下型号

class Parent(models.Model): 
  name =  models.CharField()
  children = models.ManyToManyField(Child, through="Parent_Child", related_name="parents")

class Parent_Child(models.Model):
  parent = models.ForeignKey(Parent, related_name='attached_children')
  child = models.ForeignKey(Child,  related_name='attached_parents')

class Child(models.Model): 
  name = models.CharField() 
  toys = models.ManyToManyField(Toy, hrough="Child_Toy", related_name="toy_owners")

class Child_Toy(models.Model): 
  child = models.ForeignKey(Child, related_name='attached_toys') 
  toy =  models.ForeignKey(Toy, related_name='toy_owner')

class Toy(models.Model): 
  name = models.CharField
Run Code Online (Sandbox Code Playgroud)

父母可以有多个孩子.一个孩子可以有多个父母.孩子可以拥有多个玩具.玩具可以由多个孩子拥有.

我想获得父母子女拥有的所有玩具清单.

所以,我可以做以下事情: parent.children.all()child.toys.all()

我想做的就是parent.children.toys.all() 当我尝试这样做时,我得到:AttributeError: 'ManyRelatedManager' object has no attribute 'toys'.我理解错误 - parent.children返回多个记录.这是预料之中的.我无法弄清楚的是如何给Django提示我希望它为其查询添加一个额外的连接.

有没有办法在Django中进行此连接,或者我是否需要转到自定义SQL才能执行此操作?

请注意:以上只是为了说明我的问题,我使用的实际模型并不相关.我的问题是试图弄清楚如何在Django中加入多个M2M关系,而不必诉诸SQL.

我提前感谢您的帮助.谢谢!

python django

7
推荐指数
2
解决办法
3856
查看次数

如何删除构建产品

是否可以自动删除由setup.py基于setuptools的脚本生成的构建产品?

我刚开始使用一个新的Python项目,这是我第一次使用setuptools作为开发人员,所以我可能会遇到问题.当我使用的建设项目python setup.py bdist,三个目录,build,dist和一个结束的.egg-info创建.当我然后运行python setup.py clean它似乎没有做任何事情只是打印这个:

running clean
Run Code Online (Sandbox Code Playgroud)

我已经尝试添加--allclean命令,虽然它确实会删除的一些文件build的目录,它不会删除目录本身或任何文件中的其他两个目录.

我假设这应该很容易,我只是在错误的地方.我已经习惯了这个功能,例如几乎任何项目使用的make地方make cleanmake distclean将删除任何构建产品.

python build-process setuptools

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

mvn依赖:树在普通项目上失败

我有一个非常复杂的项目(大约100个模块),我想在其上运行mvn dependency:tree.它失败了,抱怨无法解决的依赖关系.否则该项目编制正常.所以我创建了我可以提出的最基本的项目,它仍然失败并出现同样的错误.显然要么我必须做一些非常基本的错误,或者maven-dependency-plugin还没有被任何人使用过.以下是测试项目的三个POM:

pom.xml中:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.example</groupId>
    <artifactId>root</artifactId>
    <version>1.0.0-SNAPSHOT</version>
    <packaging>pom</packaging>
    <modules>
        <module>foo</module>
        <module>bar</module>
    </modules>
</project>
Run Code Online (Sandbox Code Playgroud)

富/ pom.xml中:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.example</groupId>
    <artifactId>foo</artifactId>
    <version>1.0.0-SNAPSHOT</version>
    <packaging>jar</packaging>
</project>
Run Code Online (Sandbox Code Playgroud)

酒吧/ pom.xml中:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.example</groupId>
    <artifactId>bar</artifactId>
    <version>1.0.0-SNAPSHOT</version>
    <packaging>jar</packaging>
    <dependencies>
        <dependency>
            <groupId>com.example</groupId>
            <artifactId>foo</artifactId>
            <version>1.0.0-SNAPSHOT</version>
        </dependency>
    </dependencies>
</project>
Run Code Online (Sandbox Code Playgroud)

然后我mvn dependency:tree在顶级目录中发出以下命令并获得以下输出:

[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Build …
Run Code Online (Sandbox Code Playgroud)

maven maven-dependency-plugin

7
推荐指数
2
解决办法
4640
查看次数

在Java调试器中,如何忽略从不通过我的代码的异常

我目前正在使用IntelliJ IDEA进行Java开发,但我也对针对其他IDE或调试Java代码的一般概念的答案感兴趣.因为这是我在许多IDE中遗漏的功能,所以我不确定在从其他语言转移调试习惯时是否错过了工作流程概念.

假设我在myapp.*使用框架类时编写了一些代码somelib.*.典型的堆栈跟踪可以从任一包开始,并且可以在它们之间切换多次.我们也说我在假设我的代码中存在错误并且库代码中没有任何错误的情况下进行调试.示例堆栈跟踪(仅显示类名称):

somelib.D (current stack frame)
somelib.C
myapp.Y
myapp.X
somelib.B
somelib.A
Run Code Online (Sandbox Code Playgroud)

通常,我对以下类型的异常不感兴趣,并且不希望调试器中断它们:

  • 投掷somelib.B并陷入其中somelib.A.库代码抛出异常以处理库内的有问题状态或停止应用程序.在后一种情况下,我只对异常消息感兴趣,希望告诉我什么是错的.

  • 投掷somelib.D并陷入其中somelib.C.库代码可以使用异常作为逻辑形式,其中尝试某个动作,并且在出现问题时采用替代路径,或者通过其他方式通过问题通知我的代码(例如,在适当的情况下返回空引用) .

我感兴趣的例外类型:

  • 投掷somelib.C或未somelib.D陷入somelib.Csomelib.D.在这里,我希望调试器myapp.Y在我调用代码的地方中断somelib.C.

  • 投掷myapp.X或被myapp.Y捕获或未被捕获.在这里,我希望调试器在抛出异常的行中断.

IntelliJ IDEA为我提供了选择我想要在捕获或未捕获的异常或两者上中断的选项,并限制将异常抛出到一组类的位置.这些选项并没有多大帮助,因为我通常想要打破任何异常,只要我写的代码介于它被抛出的位置和最终被捕获的位置之间.

java debugging exception intellij-idea

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

检查方法在应用于值列表的任何元素时是否抛出异常

我想为解析器编写单元测试,并希望检查它是否正确地为列表中的所有输入字符串抛出异常.现在据我所知,JUnit的标准方法是为每个案例编写一个单独的测试方法:

public final class ParseFailureTest1 {
    @Test(expected = ParseException.class)
    public void testParseFailure1() throws Exception {
        Parser.parse("[1 2]"); // Missing comma
    }

    @Test(expected = ParseException.class)
    public void testParseFailure2() throws Exception {
        Parser.parse("[1, 2,]"); // Additional commas
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,由于我想将相同的测试应用于20或50个不同的字符串,这似乎是不切实际的.

另一种方法是使用catch块显式检查异常:

public final class ParseFailureTest2 {
    @Test
    public void testParseFailure() throws Exception {
        List<String> documents = Arrays.asList(
            "[1 2]", // Missing comma
            "[1, 2,]"); // Additional commas

        for (String document : documents) {
            try {
                Parser.parse(document);

                throw new …
Run Code Online (Sandbox Code Playgroud)

java junit exception

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

仅为子类使用元类

Python 3.2或更高版本中是否有一种方法可以定义一个类,其子类应该使用特定的元类创建而不使用该元类创建类本身?

举例来说明我的意思:假设我想创建一个Enum类,其子类可用于定义枚举类型.枚举类型将具有固定数量的实例,每个实例具有不同int(或其他)值.枚举类型将通过创建子类Enum并将值赋给该类的属性来声明.通过元类Enum,这些属性的值将被新类的实例替换.

Enum班还可以定义可以在其子类或它们的情况下使用一些类或实例方法或成员.

class EnumMeta(type):
    def __new__(mcs, what, bases, dict):
        cls = super().__new__(mcs, what, bases, { })

        cls._instances_by_value = { }

        for k, v in dict.items():
            if k.startswith('__') or k == 'get_by_value':
                setattr(cls, k, v)
            else:
                instance = cls(k, v)

                setattr(cls, k, instance)
                cls._instances_by_value[v] = instance

        return cls


class Enum(metaclass = EnumMeta):
    def __init__(self, name, value):
        self.name = name
        self.value = value

    def __repr__(self):
        return '{}.{}'.format(type(self).__name__, self.name) …
Run Code Online (Sandbox Code Playgroud)

python metaclass python-3.x

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

将带有子项目的 SBT 项目作为单个 Maven 工件发布

我有一个 Scala 库的 SBT 项目。该实现分布在多个 SBT 子项目中,但我想将该库作为单个 JAR 发布。我构建了以下示例:

val subProject = project

val myLibrary = project
  .in(file("."))
  .dependsOn(subProject)
Run Code Online (Sandbox Code Playgroud)

该项目myLibrary是主要项目,它依赖于所有其他子项目。如果我运行sbt myLibrary/package,我会得到一个 JAR 文件,其中包含 project 中源的类文件、源和呈现的文档myLibrary。我找到了以下解决方法来包含来自其他子项目的文件,方法是将如下设置添加到myLibrary

val myLibrary = project
  .in(file("."))
  .dependsOn(subProject)
  .settings(
    Compile / packageBin / mappings ++= (subProject / Compile / packageBin / mappings).value,
    Compile / packageSrc / mappings ++= (subProject / Compile / packageSrc / mappings).value,
    Compile / packageDoc / mappings ++= (subProject / Compile / packageDoc / mappings).value)
Run Code Online (Sandbox Code Playgroud)

产生相同结果的预期方法是什么?

scala jar sbt

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

将Class <T>强制转换为Class <E的最简单方法是扩展Enum <E >>而不丢失类型信息

我有一个方法createFoo(),为此创建Foo<T>使用Class<T>实例的实例T.现在我想扩展该方法以将使用枚举类型进行的调用转发给该方法createEnumFoo().从第一个方法调用第二个方法似乎是非平凡的.下面是我如何设法使用两个未经检查的强制转换和一个额外的方法,我想摆脱所有这些的例子.

该方法castEnumType()是必需的,因为我找不到一种方法来将a转换Class<?>为a Class<E extends Enum<E>>而没有E绑定某处.这涉及一个未经检查的演员,因为我还没有找到一种方法来使用它Class.asSubclass().在创建实例之后Foo,我需要将它从事件转换Foo<E>Foo<T>事件,E并且T将始终是相同的类型.

我无法削弱签名,createEnumFoo()因为它正在调用Enum.valueOf(enumType, ...)并要求其结果为类型E.

final class Example {
    <E extends Enum<E>> Foo<E> createEnumFoo(Class<E> enumType) {
        // This makes use of e.g. Enum.valueOf(enumType, ...).
        return null;
    }

    <E extends Enum<E>> Class<E> castEnumType(Class<?> enumType) {
        return (Class<E>) enumType;
    }

    <T> Foo<T> createFoo(Class<T> type) { …
Run Code Online (Sandbox Code Playgroud)

java generics enums casting

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

使用 django-webpack-loader 时运行单元测试而不生成资产

我正在使用一些前端 JavaScript 代码处理 Django 项目。我正在使用django-webpack-loader将 JavaScript 打包和缩小从djanog-pipeline迁移到webpack

django-webpack-loader通过运行独立于任何Django进程的webpack来生成打包的包。然后 django-webpack-loader 将读取由webpack-bundle-tracker编写的 JSON 文件,并使用该信息将正确的路径插入到 HTML 模板中。

这完美无缺,但有一个问题:我们的一些单元测试将使用集成的Django 测试客户端访问 Django 应用程序,它呈现完整的 HTML 响应,以便测试可以检查生成的结果。可以在没有完成任何与 webpack 相关的设置的情况下运行测试。所以打包的包和 JSON 文件可能不存在。这些不是测试前端代码所必需的,只检查动态生成的 HTML。仅仅因为有人忘记运行 webpack 导致测试失败会导致沮丧。

理想情况下,我会让 django-webpack-loader<script>在运行测试时只在插入的标签中使用虚拟 URL ,从而消除对 webpack 生成的文件的依赖。我有什么选择来解决这种依赖性?

django webpack

5
推荐指数
2
解决办法
414
查看次数