小编jam*_*ieb的帖子

PostgreSQL:在plpgsql函数中回滚事务?

来自MS SQL世界,我倾向于大量使用存储过程.我目前正在编写一个应用程序使用了很多PostgreSQL plpgsql函数.我想做的是回滚特定函数中包含的所有INSERTS/UPDATES如果我在其中的任何一点得到异常.

我最初的印象是每个函数都包含在它自己的事务中,并且异常会自动回滚所有内容.但是,情况似乎并非如此.我想知道我是否应该将保存点与异常处理结合使用?但我并不真正了解事务和保存点之间的区别,以了解这是否是最好的方法.有什么建议吗?

CREATE OR REPLACE FUNCTION do_something(
         _an_input_var int
                ) RETURNS bool AS $$
        DECLARE
                _a_variable int;
        BEGIN
                INSERT INTO tableA (col1, col2, col3)
                        VALUES (0, 1, 2);

                INSERT INTO tableB (col1, col2, col3)
                        VALUES (0, 1, 'whoops! not an integer');

                -- The exception will cause the function to bomb, but the values 
                -- inserted into "tableA" are not rolled back.    

                RETURN True;
END; $$ LANGUAGE plpgsql;
Run Code Online (Sandbox Code Playgroud)

postgresql transactions plpgsql

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

从PostgreSQL存储过程返回记录集的最简单方法是什么?

我只是有一个表格,其中包含国家列表及其ISO国家/地区代码.我将查询包装在存储过程(也称为函数)中,例如:

CREATE OR REPLACE FUNCTION get_countries(
                    ) RETURNS setof record AS $$
        SELECT country_code, country_name FROM country_codes
$$ LANGUAGE sql;
Run Code Online (Sandbox Code Playgroud)

我得到的错误是:

ERROR:  a column definition list is required for functions returning "record"
Run Code Online (Sandbox Code Playgroud)

我知道我可以定义一个TYPE,然后像光标一样循环遍历记录集,但是在更新版本的PostgreSQL(我使用的是8.4.3)下,有更好的方法可以做到这一点,但我正在尝试要记住.


编辑:

这有效:

CREATE OR REPLACE FUNCTION get_countries(
                    ) RETURNS setof country_codes AS $$
        SELECT country_code, country_name FROM country_codes
$$ LANGUAGE sql;
Run Code Online (Sandbox Code Playgroud)

请注意"RETURNS setof [table name]".但它似乎并不是最灵活的.如果我尝试返回多个表的连接,它就会崩溃.

sql postgresql stored-procedures plpgsql

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

使用BeautifulSoup解析由<br>标签分隔的行?

我有一个看起来像这样的页面:

Company A<br />
123 Main St.<br />
Suite 101<br />
Someplace, NY 1234<br />
<br />
<br />
<br />
Company B<br />
456 Main St.<br />
Someplace, NY 1234<br />
<br />
<br />
<br />
Run Code Online (Sandbox Code Playgroud)

有时分隔条目有两个而不是三个"br"标签.我如何使用BeautifulSoup解析此文档并提取字段?我很难过,因为我需要的文本位不包含在我可以简单地遍历的段落(或类似)标签中.

python parsing beautifulsoup

9
推荐指数
2
解决办法
6119
查看次数

Python新手类设计问题

我正在试图找出设计几个类的最佳方法.我对Python(以及一般的OOP)很陌生,只是想确保我做得对.我有两个类:"用户"和"用户".

class User(object):
   def __init__(self):
       pass

class Users(object):
   def __init__(self):
       self.users = []

   def add(self, user_id, email):
       u = User()
       u.user_id = user_id
       u.email = email
       self.users.append(u)

users = Users()
users.add(user_id = 1, email = 'bob@example.com')
Run Code Online (Sandbox Code Playgroud)

如果我想要检索我的用户,我使用:

for u in users.users:
    print u.email
Run Code Online (Sandbox Code Playgroud)

"users.users"似乎有点多余.我这样做了吗?

python oop iterator

6
推荐指数
3
解决办法
237
查看次数

使用Boto返回CloudFormation模板的输出?

我正在尝试使用Boto从CloudFormation模板中检索输出列表.我在文档中看到有一个名为的对象boto.cloudformation.stack.Output.但我认为这是未实现的功能.这目前可能吗?

python boto amazon-web-services aws-cloudformation

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

如何使用Python创建文件路径的zip文件,包括空目录?

我一直在尝试使用zipfileshutil.make_archive模块递归创建目录的zip文件.两个模块都运行良好 - 除了空目录不会添加到存档.还会以静默方式跳过包含其他空目录的空目录.

我可以使用7Zip创建相同路径的存档,并保留空目录.因此我知道在文件格式本身中这是可能的.我只是不知道如何在Python中做到这一点.有任何想法吗?谢谢!

python zip shutil zipfile

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

如何使用mod_pagespeed重写HTML以从我的CDN提供图像?

我只是想重写包含这个的页面:

<img src="http://www.example.com/foo/bar/hello.jpg" />
Run Code Online (Sandbox Code Playgroud)

为此:

<img src="http://cdn.example.com/foo/bar/hello.jpg" />
Run Code Online (Sandbox Code Playgroud)

我觉得这应该相当简单,但我花了三个小时阅读文档并尝试这样做.

apache mod-pagespeed

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

如何使用PEAR Mail工厂显式禁用TLS?

使用PHP,我试图通过AuthSMTP(托管的SMTP服务)路由电子邮件.问题是PEAR邮件工厂自动尝试与服务器协商TLS连接.AuthSMTP不是简单地忽略该尝试,而是抛出错误.我需要一种明确告诉Mailer类不要尝试使用TLS的方法.有什么建议?

    $from = "Example <noreply@example.com>";
    $to = $email;
    $subject = "This is an email";

    $body_text = "plain text here";
    $body_html = "<h1>HTML here!</h1>";

    $headers = array ('From' => $from,
    'To' => $to,
    'Subject' => $subject);

    $mime = new Mail_mime('rn');
    $mime->setTXTBody($body_text);
    $mime->setHTMLBody($body_html);

    $body = $mime->get();
    $hdrs = $mime->headers($headers);

    $host = "mail.authsmtp.com";
    $port = 26;
    $username = "my_username";
    $password = "whatever_password";

    $mailer = Mail::factory('smtp',
    array ('host' => $host,
     'auth' => true,
     'port' => $port,
     'username' => $username,
     'password' => $password));

    if (PEAR::isError($res)) …
Run Code Online (Sandbox Code Playgroud)

php pear smtp

2
推荐指数
1
解决办法
4093
查看次数

如何使用包含字符位置的字典在Python中切片?

我有一个包含字符串中不同字段的字符位置的字典.我想用这些信息来切割字符串.我不太确定如何最好地解释这一点,但这个例子应该说清楚:

输入:

mappings = {'name': (0,4), 'job': (4,11), 'color': (11, 15)}
data = "JohnChemistBlue"
Run Code Online (Sandbox Code Playgroud)

期望的输出:

{'name': 'John', 'job': 'Chemist', 'color': 'Blue'}
Run Code Online (Sandbox Code Playgroud)

请忽略这样一个事实:工作,颜色和名字的字符长度明显不同.我正在解析固定长度的字段,但为了说明目的将其简化.

python

2
推荐指数
1
解决办法
141
查看次数

其他语言如何克服Python GIL的限制?

随着行业趋向于"网络规模"应用程序架构(尽管我讨厌流行语),我知道Python已经引起了很多批评,因为GIL如何处理并发并成为瓶颈.我理解表面上的问题,但不足以知道其他过程语言如何处理引擎下的线程.Java有类似的问题吗?C#?红宝石?如果没有,为什么Python没有采用相同的策略?

python concurrency multithreading

2
推荐指数
1
解决办法
204
查看次数

将一堆键/值词典展平成一个字典?

我想将此转换[{u'Key': 'color', u'Value': 'red'}, {u'Key': 'size', u'Value': 'large'}]成:{'color': 'red', 'size': 'large'}.

有人有什么建议吗?我一直在玩列表推导,lambda函数,并且zip()超过一个小时,感觉我错过了一个明显的解决方案.谢谢!

python

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