小编Ser*_*rán的帖子

用Python构建URL的库

我需要找到一个库来构建python中的URL,如:

http://subdomain.domain.com?arg1=someargument&arg2=someotherargument
Run Code Online (Sandbox Code Playgroud)

您会建议使用哪个库?为什么?这种图书馆有"最佳"选择吗?

python

55
推荐指数
5
解决办法
7万
查看次数

Pycharm:打开工作项目时IDE上出现"未解析的引用"错误

介绍

我在git存储库上有一个Python项目.对于大多数团队成员来说,一切正常,我们可以在不同平台(Windows,Linux)上同步代码并对Pycharm进行编辑而不会有任何问题

问题

在其中一台计算机上,除了Python的内置库(即导入日期时间正常)之外,几乎每次导入的代码都会得到"未解析的参考".这台电脑正在运行Mac版的Pycharm.

这个问题

任何人都知道如何解决这个问题?,因为大多数导入都无法识别代码完成和导航通过goto->声明等等不起作用.Mac版本有任何已知问题吗?

提前致谢!

python pycharm

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

如何将日期时间插入到Cassandra 1.2时间戳列中

重要事项 如果您今天正在处理此问题,请使用datastax中的新cassandra-driver(即import cassandra),因为它解决了大多数常见问题,并且不再使用旧的cql驱动程序,它已经过时了!这个问题从新驱动程序甚至开发之前就已经过时了,我们不得不使用一个名为cql的不完整的旧库(import cql < - 不再使用它,转移到新的驱动程序).

介绍 我正在使用python库cql来访问Cassandra 1.2数据库.在数据库中,我有一个带有timestamp列的表,在我的Python代码中,我有一个要插入列的日期时间.示例如下:

CREATE TABLE test (
     id text PRIMARY KEY,
     last_sent timestamp
);
Run Code Online (Sandbox Code Playgroud)

代码

import cql
import datetime
...
cql_statement = "update test set last_sent = :last_sent where id =:id"
rename_dict = {}
rename_dict['id'] = 'someid'
rename_dict['last_sent'] = datetime.datetime.now()
cursor.execute (cql_statement, rename_dict)
Run Code Online (Sandbox Code Playgroud)

问题

当我执行代码时,执行的实际cql语句是这样的:

update test set last_sent =2013-05-13 15:12:51 where id = 'someid'
Run Code Online (Sandbox Code Playgroud)

然后它失败并出现错误

 Bad Request: line 1:XX missing EOF at '-05'
Run Code Online (Sandbox Code Playgroud)

问题似乎是cql库没有转义('')或在运行查询之前转换日期时间.

问题 如果没有手动转义日期并且能够将更精确的完整时间戳存储到cassandra时间戳列中,这样做的正确方法是什么?

提前致谢!

python cql cassandra

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

在不查询数据库的情况下将lat-long转换为PostGIS几何体

我在postgresql中有一个带有PostGIS几何(point,4326)列(位置,使用SRID 4326)的表,我有一个使用SQL Alchemy更新表(其余列)的Python应用程序没有任何问题.

现在,我需要更新位置列,我知道我可以使用给定位置的正确文本表示来使用SQL Alchemy更新列而无需使用GEOAlchemy,例如我可以使用以下值更新列:'0101000020E6100000AEAC7EB61F835DC0241CC418A2F74040 "

对应于lat:33.9346343 long:-118.0488106

问题是:有没有办法在Python中计算这个'0101000020E6100000AEAC7EB61F835DC0241CC418A2F74040'这个(33.9346343,-118.0488106)作为输入而不查询数据库?或使用适当的文本输入更新列的任何方法?

我知道我可以使用SQLAlchemy来执行此查询:

select st_setsrid(st_makepoint(-118.0488106, 33.9346343),4326)
Run Code Online (Sandbox Code Playgroud)

并获取更新列的值,但我想避免这种情况.

提前致谢!

postgresql postgis sqlalchemy

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

调度请求时,if-elif-elif-elif的Python最佳实践

我有5组请求的类别定义为python dicts,例如:

category1 = {'type1', 'type2', 'type3'}
category2 = {'type4', 'type5'}
category3 = {'type6', 'type7', 'type8', 'type9'}
category4 = {'type10', 'type11'}
category5 = {'type12', 'type13', 'type14'}
Run Code Online (Sandbox Code Playgroud)

我需要使用他们的类别来处理请求,例如:

if request_type in category1:
    # process category1 request
    process_category1_request(...)
elif request_type in category2:
    # process category2 request
    process_category2_request(...)
elif...
Run Code Online (Sandbox Code Playgroud)

我需要使用请求类型将请求分派给不同的函数来处理它.

我已经知道有些方法可以在Python中调度这些请求而无需使用if-elif,但我的问题是:在保持代码干净简单的同时,最好的方法是什么?

python if-statement switch-statement dispatch

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

将postgresql时间戳转换为Python中的JavaScript时间戳

我有一个带时间戳列的postgre数据库,我在Python中有一个REST服务,它在数据库中执行查询并将数据返回到JavaScript前端以使用绘制图形flot.

现在我有问题是flot可以使用JavaScript的TIMESTAMP自动处理的日期,但我不知道如何将Postgre时间戳转换为JavaScript TIMESTAMP(YES时间戳,而不是日期停止编辑,如果你不知道答案)在Python中.我不知道这是否是最佳方法(也许转换可以在JavaScript中完成?).有没有办法做到这一点?

javascript python postgresql flot

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

Cassandra:如何获得总表大小/估计行数

介绍

我正在尝试从Cassandra 1.2.6集群中收集一些统计信息来实现Web服务,以便将这些统计信息提供给Web应用程序.我正在使用cql库从Python访问集群,但我也可以ssh或pssh到节点.

问题

我的问题是如何获得整个集群中的总表大小(即每个表的实际磁盘使用量),如果可能的话,每个表的总行数(这可以是估计值).

这个问题

到目前为止,我发现的唯一选项似乎是在每个节点上运行nodetool cfstats并解析响应,有没有更好的方法呢?

提前致谢!

python cql cassandra

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

如何从任何浏览器限制一个会话以获取烧瓶中的用户名?

我正在使用一个gunicorn服务器,我试图想办法限制每个用户名只有一个会话,即如果用户A从Chrome登录到应用程序,他应该无法通过Firefox登录,除非他退出chrome ,或者不应该能够在chrome本身打开另一个TAB.

如何为浏览器生成唯一ID并将其存储在数据库中,以便在用户注销或会话到期之前,用户无法通过任何其他浏览器登录.

python session flask

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

函数调用的Python编码样式有多个参数

这可能听起来像一个新手问题,但我真的需要一些帮助.我甚至不知道如何标记它,但我认为只是一个Python问题.我需要使用一个接收5个参数并返回5个值的函数:

a, b, c, d, e = function (input1, input2, input3, input4, input5)
Run Code Online (Sandbox Code Playgroud)

问题是,当我使用完整的变量/函数名行实在太长了,并且代码看起来很丑,我想在这里使用更花哨的解决方案,我想使用的字典或列表,所以我可以做这个:

input_dict['param1'] = input1
input_dict['param2'] = input2
input_dict['param3'] = input3
input_dict['param4'] = input4
input_dict['param5'] = input5
ret_dict = function(input_dict)
Run Code Online (Sandbox Code Playgroud)

有没有更好或"pythonic"的方式来提高这种电话的代码质量?

提前致谢!

python

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

Cassandra 1.2使用Python和cql库插入/更新blob列类型

介绍

我在Cassandra 1.2列系列上有一个blob列,该表定义如下:

CREATE TABLE objects (
   id        text,
   obj       blob,
   PRIMARY KEY (id)
);
Run Code Online (Sandbox Code Playgroud)

问题:

问题是,当我需要使用cql库从Python插入/更新blob列时,我需要对列进行16位编码,如下所示:

import cPickle
import cql
...
def save_object(connection, obj):
    object['id']  = obj['id']
    object['obj'] = cPickle.dumps(obj).encode("hex")
    cql_statement = "INSERT INTO objects (id, obj) values (:id, :obj)"
    cursor = connection.cursor()
    cursor.execute(cql_statement, object)
Run Code Online (Sandbox Code Playgroud)

问题:

有没有办法在不使用对象的基本16编码(字符串)的情况下执行此查询?这样做的原因是减少了通过线路而不是普通字节发送基本16编码字符串的开销.

预先感谢!

python cql cassandra

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