小编l0b*_*0b0的帖子

MySQLdb.cursor.execute无法运行多个查询

我们尝试将包含多个插入语句的SQL文件作为单个查询运行,但是rollback当任何语句包含错误时,它似乎都失败了.

MySQLd配置:

sql_mode = STRICT_ALL_TABLES
default-storage-engine = innodb
Run Code Online (Sandbox Code Playgroud)

Python代码:

from contextlib import closing
import MySQLdb
database_connection = MySQLdb.connect(host="127.0.0.1", user="root")
with closing(database_connection.cursor()) as cursor:
    database_connection.begin()
    cursor.execute('DROP DATABASE IF EXISTS db_name')
    cursor.execute('CREATE DATABASE db_name')
    cursor.execute('USE db_name')
    cursor.execute('CREATE TABLE table_name(first_field INTEGER)')
with closing(database_connection.cursor()) as cursor:
    try:
        database_connection.begin()
        cursor.execute('USE db_name')
        cursor.execute('INSERT INTO table_name VALUES (1)')
        cursor.execute('INSERT INTO table_name VALUES ("non-integer value")')
        database_connection.commit()
    except Exception as error:
        print("Exception thrown: {0}".format(error))
        database_connection.rollback()
        print("Rolled back")
with closing(database_connection.cursor()) as cursor:
    try:
        database_connection.begin()
        cursor.execute('USE db_name')
        cursor.execute('INSERT INTO …
Run Code Online (Sandbox Code Playgroud)

python mysql mysql-python

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

从setuptools迁移到pip + virtualenv

所以pipvirtualenv声音相比更精彩setuptools.能够卸载会很棒.但我的项目已经在使用setuptools,那么我该如何迁移?到目前为止,我能够找到的网站非常模糊和笼统.所以这是在阅读主要网站并尝试填写之后的问题选集:

  • 首先,是virtualenvpip应该由现在处于可用状态?如果没有,请将其他人视为狂人的狂言.
  • 应该如何virtualenv安装?我还没有准备好相信它像其他地方解释的一样令人费解.
  • 是否有一组关于如何在虚拟环境中安装matplotlib的测试说明?由于某种原因,它总是想在这里编译它而不是仅仅安装一个包,它总是以失败告终(即使之后build-dep占用了250 MB的磁盘空间).在打印了一大堆警告之后src/mplutils.cpp:17: error: ‘vsprintf’ was not declared in this scope.
  • 两种工具如何互动setup.pypip应该取代easy_install,但目前尚不清楚它是否是一种堕落或更复杂的关系.
  • virtualenv仅用于开发模式,还是用户也应该安装它?
  • 生成的软件包是否会以最低要求(如当前鸡蛋)安装,或者是否会安装所有依赖项的源和二进制文件以及所有构建工具,在虚拟环境中创建一个千兆字节的怪物?
  • 如果用户安装在虚拟环境中,用户是否必须修改它们$PATH$PYTHONPATH运行生成的包?
  • 我是否需要创建一个文本字符串脚本用于virtualenv在坏日子是怎样的?
  • 什么是与#egg=PackageURL语法?这不是标准URL的一部分,为什么它不是一个单独的参数?
  • @rev包含在URL中的哪个位置?最后我想,但文档并不清楚("你也可以在URL中包含@rev").
  • 通过将现有需求文件用作"作为新文件的一种模板",应该理解什么?这可能意味着任何事情.

python packaging pip matplotlib virtualenv

13
推荐指数
1
解决办法
3969
查看次数

如何生成随机凸多边形?

我正在尝试设计一种生成随机2D凸多边形的方法.它必须具有以下属性:

  • 坐标应该是整数;
  • 多边形应位于带角(0,0)和(C,C)的正方形内,其中给出C;
  • 多边形应具有接近给定数量N的顶点数.

例如,生成具有10个顶点并位于square [0..100] x [0..100]内的随机多边形.

使这项任务变得困难的原因是坐标应该是整数.

我尝试的方法是在给定的方格中生成随机的点集并计算这些点的凸包.但是与N相比,合成的凸包是非常小的顶点.

有任何想法吗?

random geometry

12
推荐指数
2
解决办法
4261
查看次数

如何创建自引用的Python 3枚举?

我可以创建一个枚举类RockPaperScissors,使ROCK.value == "rock"and ROCK.beats == SCISSORS,where ROCKSCISSORS均为常量RockPaperScissors吗?

python python-3.6

12
推荐指数
3
解决办法
305
查看次数

单个sudo命令中的apt-get update,dist-upgrade,autoremove,autoclean

我保持机器最新的常用命令相当冗长,如果任何命令需要很长时间,它可能会导致多个密码提示:

sudo apt-get update && sudo apt-get dist-upgrade && sudo apt-get autoremove && sudo apt-get autoclean
Run Code Online (Sandbox Code Playgroud)

我想将其缩短为一个命令(最好不使用全局别名).

解决方案基于@ amra的答案另一个提示:

sudo sh -c 'apt-get update && apt-get upgrade --yes && if [ -f /var/run/reboot-required ]; then echo You should reboot; fi' 
Run Code Online (Sandbox Code Playgroud)

ubuntu apt-get

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

在以dash开头的目录中查找

find将文件名开头的短划线解释为选项的开头.使用熟悉的--技巧不起作用,因为选项在文件名之后,引用无效,并且替换第一个破折号\-也不起作用.通常鼓励用户在这些文件名之前./,但如果我不知道给定路径是绝对路径还是相对路径,我该怎么办?

编辑:一个解决方案是find "$(readlink -f -- "$test_filename")",但它很难看.有更好的想法吗?

编辑2:感谢您的建议.以下是这项工作产生的两个脚本: safe-find.sh ; safe-count-files.sh

unix shell escaping find

10
推荐指数
2
解决办法
1992
查看次数

在shell脚本中排序

我有一个阵列

arr=( x11 y12 x21 y22 x31 y32)
Run Code Online (Sandbox Code Playgroud)

我需要将此数组排序为

x11 x21 x31 y12 y22 y32
Run Code Online (Sandbox Code Playgroud)

所以,我需要按字母和数字排序

我如何在shell脚本中执行此操作?

如果我使用[ $i -le $j ],它会说"预期的整数表达式".

字符串也可能包含其他字符:x.1.11.x.1.

我该怎么做呢 ?

arrays sorting shell csh

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

命令替换后的管道状态

我想将一系列命令的结果发送给变量:

variable=$(a | few | commands)
Run Code Online (Sandbox Code Playgroud)

但是,命令替换重置PIPESTATUS,所以我无法检查事后的错误.一种解决方案是mktemp暂时使用并将结果放在那里:

variable_file=$(mktemp) || exit 1
a | few | commands > $variable_file
exit_codes="${PIPESTATUS[*]}"
variable=$(<$variable_file)
Run Code Online (Sandbox Code Playgroud)

有更优雅的解决方案吗?

bash pipe

9
推荐指数
1
解决办法
2660
查看次数

同步保存stdout,stderr和stdout + stderr

出于测试目的,我想保存输出和错误分别通过随后的代码检查.例如,具有错误输入的测试运行应该导致输出到stderr,但是在stdout上没有输出,而具有正确输入的测试运行应该导致输出到stdout,但是没有输出到stderr.保存必须是同步的,以避免测试的竞争条件(因此我不能使用进程替换).

为了能够在事后调试测试,我需要在输出的序列中看到stdout和stderr.因此,我必须将它们保存到相同的文件/变量/任何/或者同时将它们发送到终端,以便单独保存它们.

为了测试发生了哪个错误,我需要命令的退出代码.

出于效率和准确性的原因,我当然不能每次测试两次.

例如,可以将stdout重定向到stdout.log,将stderr重定向到stderr.log,并将它们都重定向到output.log中的同一命令吗?或者为stdout和stderr分别使用同步 tee命令?或者将stdout和stderr的副本保存为单独的变量?

更新:看起来tim的解决方案几乎可以工作(修改为在终端上输出而不是记录到all.log):

$ set -o pipefail
$ {
    {
        echo foo | tee stdout.log 2>&3 3>&-
    } 2>&1 >&4 4>&- | tee stderr.log 2>&3 3>&-
} 3>&2 4>&1
foo
$ cat stdout.log
foo
$ cat stderr.log
$ {
    {
        echo foo >&2 | tee stdout.log 2>&3 3>&-
    } 2>&1 >&4 4>&- | tee stderr.log 2>&3 3>&-
} 3>&2 4>&1
foo
$ cat …
Run Code Online (Sandbox Code Playgroud)

bash redirect

9
推荐指数
1
解决办法
4396
查看次数

GitHub作为单独的回购发行?

已经有一个GitHub问题API,但有没有人成功实现双向?那是:

git clone git@github.com:user/repo.issues.git # Like for wiki
editor repo.issues/1.json
git push -u origin master
Run Code Online (Sandbox Code Playgroud)

瞧,一个新的/更新的问题#1!

在接受任何推送之前,它可以使用预接收挂钩进行验证,因此无效格式化应该不是问题.

换句话说,有没有办法将GitHub项目的问题作为另一个GitHub回购处理?

github

9
推荐指数
1
解决办法
1122
查看次数