小编Chr*_*est的帖子

Python请求和持久会话

我正在使用请求模块(版本0.10.0与Python 2.5).我已经想出如何将数据提交到网站上的登录表单并检索会话密钥,但我看不到在后续请求中使用此会话密钥的明显方法.有人可以在下面的代码中填写省略号或建议另一种方法吗?

>>> import requests
>>> login_data =  {'formPosted':'1', 'login_email':'me@example.com', 'password':'pw'}
>>> r = requests.post('https://localhost/login.py', login_data)
>>> 
>>> r.text
u'You are being redirected <a href="profilePage?_ck=1349394964">here</a>'
>>> r.cookies
{'session_id_myapp': '127-0-0-1-825ff22a-6ed1-453b-aebc-5d3cf2987065'}
>>> 
>>> r2 = requests.get('https://localhost/profile_data.json', ...)
Run Code Online (Sandbox Code Playgroud)

python python-requests

95
推荐指数
5
解决办法
17万
查看次数

对SQL Server的调用忽略pyodbc.connect timeout参数

我在Linux上使用pyodbc和FreeTDS连接到SQL Server 2005.我注意到我的连接的超时参数没有被我的查询所尊重.

当我运行以下操作时,我希望在cursor.execute调用之后看到超时错误.

import pyodbc
import time

connString = 'SERVER=dbserver;PORT=1433;DATABASE=db;UID=dbuser;PWD=dbpwd;' + \
    'DRIVER=FreeTDS'
cnxn = pyodbc.connect(connString , timeout=3)

cursor = cnxn.cursor()

t1  = time.time()
cursor.execute("SELECT MAX(Qty) FROM big_table WHERE ID<10000005")
print cursor.fetchone()
t2 = time.time()
print t2-t1

cursor.execute("WAITFOR DELAY '00:00:30'")
print 'OK'
Run Code Online (Sandbox Code Playgroud)

相反,我得到了这个输出.指示第一个db查询占用7.5秒,第二个调用占用30秒而不会超时.

(808432.0, )
7.56196093559
OK
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法来强制使用pyodbc和SQL Server查询超时?

python sql-server-2005 pyodbc

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

pycurl等价于"curl --data-binary"

我想在pycurl中知道这个curl命令的等价物:

curl --data-binary @binary_data_file.bin 'http://server/myapp/method'
Run Code Online (Sandbox Code Playgroud)

注意:上面的curl语句使用POST方法.我需要使用它来与我的服务器脚本兼容.

python pycurl

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

带滑块的Javascript气泡图

OK Cupid网站上有一篇名为10 Charts about Sex的信息图文章.

我非常喜欢图表#7包含气泡图和滑块的方式.

我想用我自己的Javascript可视化理想情况下使用jQuery库做同样的事情.

不幸的是,好的丘比特似乎已经动画了一系列泡泡图的PNG图像.

我将非常感谢有关是否存在可以合并滑块的现有图表库的一些指导.或者,可以使用滑块呈现几个气泡图,但仍然可以获得良好的性能.

javascript jquery

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

Splinter节省了脱胎的html

splinter 0.7.3python 2.7.2Linux平台上使用该模块使用默认的Firefox浏览器来搜索网站上的目录列表.

这是通过单击html中的"下一步"链接来迭代分页Web列表的代码片段.

    links = True
    i = 0
    while links:
        with open('html/register_%03d.html' % i, 'w') as f:
            f.write(browser.html.encode('utf-8'))
        links = browser.find_link_by_text('Next')
        print 'links:', links
        if links:
            links[0].click()
        i += 1
Run Code Online (Sandbox Code Playgroud)

我知道链接正在工作,因为我看到的输出看起来像这样:

links: [<splinter.driver.webdriver.WebDriverElement object at 0x2e6da10>, <splinter.driver.webdriver.WebDriverElement object at 0x2e6d710>]
links: [<splinter.driver.webdriver.WebDriverElement object at 0x2e6d5d0>, <splinter.driver.webdriver.WebDriverElement object at 0x2e6d950>]
links: [<splinter.driver.webdriver.WebDriverElement object at 0x2e6d710>, <splinter.driver.webdriver.WebDriverElement object at 0x2e6dcd0>]
links: []
Run Code Online (Sandbox Code Playgroud)

使用f.write(browser.html.encode('utf-8'))它在每个页面保存html时,第一页的工作正常.在后续页面中,虽然我可以看到在Firefox中呈现的页面,但html/regiser_...html文件为空或者身体标记缺失如下:

<!DOCTYPE html>
<!--[if lt IE 7]>      <html prefix="og: http://ogp.me/ns#" …
Run Code Online (Sandbox Code Playgroud)

python screen-scraping splinter

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

在比萨(xhtml2pdf)分页只是重复最后一页

我正在使用比萨制作包含遵循通用格式的页面的PDF文件。我显然做错了,因为当我生成PDF时(无论是从命令行还是从python API生成),我都只会看到最后一页的重复。

在下面的代码上运行Pisa,我得到三个页面,每个页面都显示“ C Tuesday”,而我希望看到三个不同的页面,分别是“ A Monday”,“ B Tuesday”和“ C Tuesday”。

我当前的比萨版本是 XHTML2PDF/pisa 3.0.33 (Build 2010-06-16)

<html>
<style>
    /* 297 x 210 */
@page {
  size: a4 landscape;
  margin: 1cm;
  margin-bottom: 2.5cm;

  @frame header {
    -pdf-frame-content: headerContent;
    background-color:black;
    color:white;
    top : 0cm;
    margin-left: 0cm;
    margin-right: 14.5cm; 
    height: 2.5cm;
    width: 14.9cm;
  }

  @frame lhs {
    -pdf-frame-content: lhs;
    background-color:white;
    color:black;
    top : 4.5cm;
    margin-left: 0cm;
    margin-right: 14.5cm; 
    height: 13.5cm;
    width: 14.9cm;
  }

  @frame footer {
    -pdf-frame-content: footerContent;
    color:black;
    bottom: 1cm; …
Run Code Online (Sandbox Code Playgroud)

python pisa xhtml2pdf

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

转义web2py数据库连接字符串中的特殊字符

我使用web2py连接到密码为"at"的数据库,例如"P @ sswd".

db = DAL('mysql://user1:P@sswd@localhost/test')
Run Code Online (Sandbox Code Playgroud)

这被解释为使用密码"P"与主机'sswd @ localhost'的连接.

我尝试过明显的URL转义技术,但失败了:

db = DAL('mysql://user1:P%40sswd@localhost/test')
Run Code Online (Sandbox Code Playgroud)

是否有资源解释这些URL样式连接字符串中使用的转义约定?

python web2py

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

解析人类可读的相对时间

我想解析诸如3 days agoin之类的人类术语python 2.7以获得等效的 timedelta 。

例如:

>>> relativetimeparer.parser('3 days ago')
datetime.timedelta(3)
Run Code Online (Sandbox Code Playgroud)

我已经尝试过该dateparser模块。

>>> import dateparser
>>> dateparser.parse('3 days ago')
datetime.datetime(2016, 8, 20, 2, 57, 23, 372538)
>>> datetime.now() - dateparser.parse('3 days ago')
datetime.timedelta(3, 35999, 999232)
Run Code Online (Sandbox Code Playgroud)

它直接解析相对时间,datetime而不选择返回timedelta. 它还似乎认为3天前实际上是3天零10小时前。所以它似乎也调用了我与格林威治的时区偏移(+10 小时)。

是否有更好的模块来解析人类可读的相对时间?

python time

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

从 Python rpy2 使用命令行参数调用 R 脚本

我希望能够使用 rpy2 模块从 python 调用 R 文件。我希望能够将参数传递给这些脚本,这些脚本可以由 R 的 commandArgs 函数解释。

因此,如果我的 R 脚本 ( trivial_script.r) 如下所示:

print(commandArgs(TRUE))
Run Code Online (Sandbox Code Playgroud)

我的 Python 2.7 脚本如下所示:

>>> import rpy2.robjects as robjects
>>> script = robjects.r.source('trivial_script.r')
Run Code Online (Sandbox Code Playgroud)

如何使用参数“arg1”、“arg2”、“arg3”从 rpy2.robjects 调用它?

python r rpy2

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

将Flask蓝图与Flask-JWT相结合

我正在Flask使用Blueprints 开发一个0.12应用程序,并且尝试使用Flask-JWT(0.3.2)进行身份验证。

我看不到的Flask-JWT教程都使用蓝图。

每个示例中通常都有一段代码,其功能如下:

app = Flask(__name__)
jwt = JWT(app, authenticate, identity)
Run Code Online (Sandbox Code Playgroud)

在蓝图烧瓶应用程序中,结构趋于更像这样:

__init__.py

from swarm.controllers.main import main
from swarm.controllers.grid import grid
from swarm.controllers.address import address

def create_app(object_name):
    app = Flask(__name__)
    ...
    app.register_blueprint(main)
    app.register_blueprint(grid)
    app.register_blueprint(address)
Run Code Online (Sandbox Code Playgroud)

控制器/ main.py:

main = Blueprint('main', __name__)
Run Code Online (Sandbox Code Playgroud)

控制器/grid.py:

grid = Blueprint('grid', __name__)
Run Code Online (Sandbox Code Playgroud)

控制器/address.py:

address = Blueprint('address', __name__)
Run Code Online (Sandbox Code Playgroud)

如何Flask-JWT在控制器中引用和使用其装饰器?

通过在烧瓶源代码或Micha中显示如何向标准示例(例如blueprintexample)添加JWT装饰器,可能会更容易回答这个问题。Karzy?ski的REST API演示

flask python-3.x flask-jwt

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