小编jes*_*ley的帖子

使用Python Zeep反思WSDL

我试图使用Zeep来描述给定WSDL中的操作和类型,以便程序知道操作名称,它们的参数名称,参数类型和参数属性.

此信息将用于动态生成给定WSDL的UI.

到目前为止我所获得的仅仅是操作和类型的字符串表示.使用与此答案中的代码类似的代码.

这是一个例子:

from zeep import Client
import operator

wsdl = 'http://webservices.amazon.com/AWSECommerceService/AWSECommerceService.wsdl'
client = Client(wsdl)

# get each operation signature
for service in client.wsdl.services.values():
    print("service:", service.name)
    for port in service.ports.values():
        operations = sorted(
            port.binding._operations.values(),
            key=operator.attrgetter('name'))

        for operation in operations:
            print("method :", operation.name)
            print("  input :", operation.input.signature())
            print()
    print()

# get a specific type signature by name
complextype = client.get_type('ns0:CartGetRequest')
print(complextype.name)
print(complextype.signature())
Run Code Online (Sandbox Code Playgroud)

这给出了如下输出(为简洁起见缩短)

[...]

method : CartCreate
  input : MarketplaceDomain: xsd:string, AWSAccessKeyId: xsd:string, AssociateTag: xsd:string, Validate: xsd:string, XMLEscaping: …
Run Code Online (Sandbox Code Playgroud)

python soap wsdl soappy zeep

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

simplexml_load_string()不会在标记中使用"soap:"读取soap响应

我知道这可能是一个新手问题,但请幽默我.在标签中读取带有"soap:"的xml字符串时,xml中不会读取simplexml_load_string().

给出这个脚本:

#!/usr/bin/php
<?php

$s='
    <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope">
        <soap:Header>
        <context xmlns="urn:zimbra"/>
        </soap:Header>
        <soap:Body>
            <AuthResponse xmlns="urn:zimbraAdmin">
                <authToken>somevalue</authToken>
                <lifetime>123124123</lifetime>
                <a n="zimbraIsDomainAdminAccount">false</a>
            </AuthResponse>
        </soap:Body>
    </soap:Envelope>';


print_r(simplexml_load_string($s));
echo "\n\n";
print_r(simplexml_load_string(str_ireplace("soap:", "", $s)));
?>
Run Code Online (Sandbox Code Playgroud)

我得到这个输出:

jesse@jesse-debian:~/code/zmsoap$ ./xmltest.php 
SimpleXMLElement Object
(
)

SimpleXMLElement Object
(
    [Header] => SimpleXMLElement Object
        (
            [context] => SimpleXMLElement Object
                (
                )

        )

    [Body] => SimpleXMLElement Object
        (
            [AuthResponse] => SimpleXMLElement Object
                (
                    [authToken] => somevalue
                    [lifetime] => 123124123
                    [a] => false
                )

        )

)
jesse@jesse-debian:~/code/zmsoap$
Run Code Online (Sandbox Code Playgroud)

我只是好奇为什么会发生这种情况,并且如果有更合适的方法来解决问题,而不是进行字符串替换.

php xml curl soap simplexml

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

在sed命令中使用占位符/变量

我想将匹配结果的特定部分存储为稍后用于替换的变量.我想把它保存在一个班轮中而不是找到我需要的变量.

在配置apache并使用mod_rewrite时,您可以指定要用作变量的模式的特定部分,如下所示:

RewriteRule ^www.example.com/page/(.*)$ http://www.example.com/page.php?page=$1 [R=301,L]
Run Code Online (Sandbox Code Playgroud)

括号内包含的模式匹配部分存储为$ 1以供日后使用.因此,如果网址是www.example.com/page/home,它将被替换为www.example.com/page.php?page=home.所以比赛的"主场"部分保存在$ 1中,因为它是括号内部模式的一部分.

我想要一个像sed命令这样的功能,我需要自动替换SQL转储文件中的许多字符串,如果在每个create table之前存在命令,则添加drop table,但是我需要知道表名来执行此操作,所以如果转储文件包含以下内容:

...
CREATE TABLE `orders`
...
Run Code Online (Sandbox Code Playgroud)

我需要运行类似的东西:

cat dump.sql | sed "s/CREATE TABLE `(.*)`/DROP TABLE IF EXISTS $1\N CREATE TABLE `$1`/g"
Run Code Online (Sandbox Code Playgroud)

得到的结果:

...
DROP TABLE IF EXISTS `orders`
CREATE TABLE `orders`
...
Run Code Online (Sandbox Code Playgroud)

我在sed命令中使用mod_rewrite语法作为我正在尝试做的事情的逻辑示例.

有什么建议?

bash awk sed

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

在PGSQL中模拟MySQL的substring_index()

我想找到一种优雅的方法来模拟Postgres 中MySQL的subtring_index()函数的行为.

在MySQL中,它很简单:

mysql> create temporary table test1(test varchar(200));
Query OK, 0 rows affected (0.01 sec)

mysql> insert into test1 values('apples||oranges'),('apples||grapes');
Query OK, 2 rows affected (0.00 sec)
Records: 2  Duplicates: 0  Warnings: 0

mysql> select * from test1;
+-----------------+
| test            |
+-----------------+
| apples||oranges |
| apples||grapes  |
+-----------------+
2 rows in set (0.00 sec)

mysql> select substring_index(test, '||', 1) as field1, substring_index(test, '||', -1) as field2 from test1;
+--------+---------+
| field1 | field2  |
+--------+---------+ …
Run Code Online (Sandbox Code Playgroud)

mysql sql postgresql

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

使用mysql-proxy操作登录信息

是否可以在lua脚本中拦截和更改mysql-proxy的登录信息。

例如,如果用户要像这样点击代理:

mysql -h localhost -P 4040 -u bob -D orders -p
Run Code Online (Sandbox Code Playgroud)

我希望连接不仅重定向到后端服务器,而且用户名/数据库名称也要更改,以便上面的命令等效于此:

mysql -h production.server -P 3306 -u bob_production -D bob_orders -p
Run Code Online (Sandbox Code Playgroud)

我注意到,似乎只有通过身份验证后,才能在脚本中获取身份验证信息,即使我以前可以获取身份验证信息,我也看不到轻松注入它的方法。

有谁知道如何在mysql-proxy或其他解决方案中做到这一点?

mysql mysql-proxy

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

MySQL - 使用同一行中另一列的子字符串填充列

我想遍历整个表,使用另一列中值的子字符串填充新创建的列的值.

给定一个与以下内容不同的表结构:

+--------+--------------+------+-----+---------+----------------+
| Field  | Type         | Null | Key | Default | Extra          |
+--------+--------------+------+-----+---------+----------------+
| id     | int(11)      | NO   | PRI | NULL    | auto_increment |
| email  | varchar(150) | YES  |     | NULL    |                |
| domain | varchar(100) | YES  |     | NULL    |                |
+--------+--------------+------+-----+---------+----------------+
Run Code Online (Sandbox Code Playgroud)

其中包含的数据类似于:

+----+-------------------------+--------+
| id | email                   | domain |
+----+-------------------------+--------+
|  1 | bob@domain1.com         | NULL   |
|  2 | jim@domain1.com         | NULL   |
|  3 | …
Run Code Online (Sandbox Code Playgroud)

mysql

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

将包含反斜杠的字符串读入bash中的变量

好吧,所以我有一个用户和密码的CSV文件,密码有时包含反斜杠,我需要循环这个文件并将用户和密码传递给另一个脚本,但我无法弄清楚如何使bash取反斜杠作为文字角色.

csv:

jgalley@debian1mig:~/logs/zimbraShares$ cat test.csv 
user3@domain.com,bzfbx6bkuu\Mpull
user2@domain.com,Hppk8mll\kffbsfd
user1@domain.com,w1fgfqbjlhLjnni\
Run Code Online (Sandbox Code Playgroud)

Sed没有扩展反斜杠 - 这很好:

jgalley@debian1mig:~/logs/zimbraShares$ cat test.csv | sed "s/,/\t/" 
user3@domain.com        bzfbx6bkuu\Mpull
user2@domain.com        Hppk8mll\kffbsfd
user1@domain.com        w1fgfqbjlhLjnni\
Run Code Online (Sandbox Code Playgroud)

尝试将它们读入变量会导致反斜杠成为元字符,如您所见,它会转义字符并导致最后一行转义返回字符,因为它在结尾处:

jgalley@debian1mig:~/logs/zimbraShares$ cat test.csv | sed "s/,/\t/" | while read user pass; do echo "${user},${pass}"; done
user3@domain.com,bzfbx6bkuuMpull
user2@domain.com,Hppk8mllkffbsfd
Run Code Online (Sandbox Code Playgroud)

试图首先逃避反斜杠也不起作用:

jgalley@debian1mig:~/logs/zimbraShares$ cat test.csv | sed "s/,/\t/" | sed "s/\\\/\\\\/g" | while read user pass; do echo "${user},${pass}"; done
user3@domain.com,bzfbx6bkuuMpull
user2@domain.com,Hppk8mllkffbsfd
jgalley@hoth1mig:~/logs/zimbraShares$ 
Run Code Online (Sandbox Code Playgroud)

最终目标是做这样的事情:

head test.csv | sed "s/,/\t/g" | while read auser apass;
do 
  echo -n "${auser},${apass}"
  bash -c …
Run Code Online (Sandbox Code Playgroud)

bash awk sed

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

特定查询语法在php mysqli中无效,但在MySQL CLI中无效.

当我尝试在PHP mysqli中执行它时,此查询给出了语法错误,但在MySQL CLI中执行时却没有.有人能告诉我这里发生了什么.

这是查询:

DROP TABLE IF EXISTS `wp_commentmeta`;
    CREATE TABLE `wp_commentmeta` (
      `meta_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
      `comment_id` bigint(20) unsigned NOT NULL DEFAULT '0',
      `meta_key` varchar(255) DEFAULT NULL,
      `meta_value` longtext,
      PRIMARY KEY (`meta_id`),
      KEY `comment_id` (`comment_id`),
      KEY `meta_key` (`meta_key`)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
Run Code Online (Sandbox Code Playgroud)

这是测试代码:

<?php

$sql="
    DROP TABLE IF EXISTS `wp_commentmeta`;
    CREATE TABLE `wp_commentmeta` (
      `meta_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
      `comment_id` bigint(20) unsigned NOT NULL DEFAULT '0',
      `meta_key` varchar(255) DEFAULT NULL,
      `meta_value` longtext,
      PRIMARY KEY (`meta_id`),
      KEY …
Run Code Online (Sandbox Code Playgroud)

php mysql mysqli

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

标签 统计

mysql ×4

awk ×2

bash ×2

php ×2

sed ×2

soap ×2

curl ×1

mysql-proxy ×1

mysqli ×1

postgresql ×1

python ×1

simplexml ×1

soappy ×1

sql ×1

wsdl ×1

xml ×1

zeep ×1