小编com*_*mte的帖子

postgresql:如何在模式中重命名表

我正在使用PostgreSQL 9.x,我想重命名一个表.这个SQL代码:

CREATE TABLE new (id int);
ALTER TABLE new RENAME TO old;
DROP TABLE old;
Run Code Online (Sandbox Code Playgroud)

正确重命名表.但是这个SQL代码:

CREATE SCHEMA domain;
CREATE TABLE domain.new (id int);
ALTER TABLE domain.new RENAME TO domain.old;
Run Code Online (Sandbox Code Playgroud)

失败,错误:

错误:"."或附近的语法错误.

"." 下划线是'域'和'旧'之间的一个

postgresql

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

JSONB使PostgreSQL数组无用吗?

假设您要在对象上存储"标签"(例如,帖子).在9.4版本中,您有3个主要选择:

  • 标签为文本[]
  • 标签为jsonb
  • 标记为文本(并将JSON字符串存储为文本)

在许多情况下,第3个将是不可能的,因为它不允许查询条件为"标签"值.在我目前的开发中,我不需要这样的查询,标签只在帖子列表中显示,而不是过滤帖子.

所以,选择主要是在text[]和之间jsonb.两者都可以查询.
你会用什么?为什么?

arrays postgresql database-design jsonb postgresql-9.4

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

设置CORS配置时出现Google Storage ArgumentException

关注Google文档,使用GoogleCloud Storage控制台时:

mysef@myproject:~$ cat cors-json-file.json 
[ 
  {
    "origin": ["*"],
    "method": ["GET"],
    "maxAgeSeconds": 3600
  } 
]
Run Code Online (Sandbox Code Playgroud)

然后我收到以下错误:

myself@myproject:~$ gsutil cors set cors-json-file.json gs://mybucket
Setting CORS on gs://mybucket/...
ArgumentException: JSON CORS data could not be loaded from: [ 
  {
    "origin": ["*"],
    "method": ["GET"],
    "maxAgeSeconds": 3600
  } 
]
Run Code Online (Sandbox Code Playgroud)

删除"method","maxAgeSeconds"或添加"responseHeader"时出现相同的错误.

cors google-cloud-storage gsutil

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

如果构造函数参数无效,如何返回None

目前我有类似的东西

if name and password:
     user = User(name, password)
     ...do stuff
Run Code Online (Sandbox Code Playgroud)

我想重构一下:

user = User(name, password)
if user:
     ...do stuff
Run Code Online (Sandbox Code Playgroud)

我创建了一个User()类:

class User():
    def __init__(self, name, password):
        if name and password:
            self.name, self.password = name, password
Run Code Online (Sandbox Code Playgroud)

但在这种情况下,即使name或者passwordNone,user仍然被实例化(空,但仍然存在,所以if user:测试为真).

如何将我不会实例基于特定参数的对象?

python oop class

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

psycopg2:DictCursor与RealDictCursor

AFAIU和文档,RealDictCursor是一个专门的DictCursor,它只能从密钥(也就是列名)访问列,而DictCursor允许从密钥或索引号访问数据.
我想知道为什么如果DictCursor提供更多的灵活性,RealDictCursor已被实现?它在性能方面(或记忆方面)如此不同(有利于我想象的RealDictCursor)?
换句话说,RealDictCursor用例与DictCursor有什么关系?

python postgresql psycopg2 python-3.x

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

大熊猫时间序列重新采样结束一天

我怀疑许多研究时间序列数据的人已经遇到过这个问题,而且大熊猫似乎没有提供直接的解决方案(还有!):

假设:

  1. 您有一个时间序列的每日数据与关闭价格,按日期(日)索引.
  2. 今天是19JUN.最后收盘数据值为18JUN.
  3. 您希望将每日数据重新采样到OHLC条形图中,并以某个给定频率(假设M或2M)结束18JUN.

所以对于M freq,最后一个是19MAY-18JUN,前一个是19APR-18MAY,依此类推......

ts.resample('M', how='ohlc')
Run Code Online (Sandbox Code Playgroud)

将进行重新取样,但"M"为'end_of_month'期间,因此结果将给出2014-05的整月和2014-06的2周期间,因此您的最后一个栏将不是'月度栏' .那不是我们想要的!

有了2M频率,根据我的样本时间序列,我的测试给了我标记为2014-07-31的最后一个条(以前标记为2014-05-31),这是非常误导,因为没有关于JUL的数据....假设的最后2个月的酒吧再次覆盖了最近的2周.

使用以下命令可以轻松创建正确的DatetimeIndex:

pandas.date_range(end='2014-06-18', freq='2M', periods=300) + datetime.timedelta(days=18)
Run Code Online (Sandbox Code Playgroud)

(Pandas文档更喜欢通过做同样的事情

pandas.date_range(end='2014-06-18', freq='2M', periods=300) + pandas.tseries.offsets.DateOffset(days=18)
Run Code Online (Sandbox Code Playgroud)

但是我的测试显示这种方法,虽然更多'pandaïc'慢了2倍!)

无论哪种方式,我们都无法将正确的DatetimeIndex应用于ts.resample().

似乎pandas开发团队(Pandas中的日期范围)意识到了这个问题,但与此同时,你怎么能解决这个问题,让OHLC的滚动频率在时间序列的最后一天得到锚定?

python time-series pandas

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

在__init __()中如果不满足条件时不要创建对象

我有一个映射数据库对象的类

class MyObj:
    def __init__(self):
        ...SQL request with id as key...
        if len(rows) == 1:
            ...maps columns as my_obj attributes...
            self.exists = True
        else:
            self.exists = False
Run Code Online (Sandbox Code Playgroud)

通过这样的设计,每次都会创建一个对象,并使用.exists属性检查它是否存在于数据库中.

my_obj = MyObj(id=15)
if my_obj.exists:
    ...do stuff...
Run Code Online (Sandbox Code Playgroud)

有用.

但我怀疑有一种更简洁的初始化方法,我们只需要检查:

 my_obj = MyObj(id=15)
 if my_obj:
     ...do stuff...
Run Code Online (Sandbox Code Playgroud)

python oop python-3.x

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

如何以给定的线/秒速率制作cat/tac流?

想象你有一个名为"filename"的大日志文件

如果您使用tail -f filename,那么只有在filename更新时才会有一个流

如果您使用cat filename,那么您有一个流,但如果您的CPU比intel 8088新,则无法读取它

如果你cat filename | 更多的是你有一个页面,一页一页,可能会打破你的空格键

如何以给定的速率列出文件(例如:每0.05秒一行)所以我有时间阅读,但我不需要按空格键数百次?

(我不使用| grep,因为在我的特殊情况下,我不知道究竟要搜索什么)

linux shell

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

传递对象属性(id)或完整对象作为参数

假设有一个具有id其他属性的对象。
假设有一个只需要object.id处理的通用函数(例如:从 id 从数据库中检索对象值)

在 Python 3(内存方面或性能方面)执行以下操作是否花费更多:

    def my_function(self, id):
        do_stuff_with(id)

    my_function(my_object.id)
Run Code Online (Sandbox Code Playgroud)

或者

    def my_function(self, obj):
        do_struff_with(obj.id)

    my_function(my_object)
Run Code Online (Sandbox Code Playgroud)

我想这个答案取决于语言的实现,所以我想知道在 Python 3 中使用 object 作为参数是否有额外的成本,因为我觉得它更灵活(想象一下,在这个函数的下一个实现中,你还需要 object.name,那么你不必修改签名)

python python-3.x

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

jsonb与psycopg2 RealDictCursor

我有一个postgresql 9.4(又名mongodb杀手;-))和这个简单的架构:

CREATE TABLE test (id SERIAL, name text, misc jsonb);
Run Code Online (Sandbox Code Playgroud)

现在我填充这个,如果我做一个选择它会显示类似的东西

id    |     name      |    misc
1     |     user1     | { "age" : 23, "size" : "M" }
2     |     user2     | { "age" : 30, "size" : "XL" }
Run Code Online (Sandbox Code Playgroud)

现在,如果我用psycopg2发出请求,

cur.execute("SELECT * FROM test;")
rows = list(cur)
Run Code Online (Sandbox Code Playgroud)

我最终会

[ { 'id' : 1, 'name' : 'user1', 'misc' : '{ "age" : 23, "size" : "M" }' }, 
{ 'id2' : 2, 'name' : 'user2', 'misc' : '{ "age" …
Run Code Online (Sandbox Code Playgroud)

postgresql psycopg2 python-3.x postgresql-9.4

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

如何在SQL数据库中存储python float

在python3中,我主要使用float或np.float32 / 64,当将其存储到数据库中时,即使SQL类型为Numeric / Decimal,我们最终也会得到0.400000000000021或类似的值而不是0.4,
这可能是一个问题这些数据是从另一个应用程序访问的。

仅使用十进制.python中的十进制对我们来说不是答案,因为我们大量利用了熊猫,并且不支持十进制。
一种解决方案是在插入SQL之前将float转换为Decimal(在我们的例子中为SQL Server,但这是一个细节)。然后从十进制返回到SELECT之后的浮点数。
您是否有另一种(更好的方法)来处理此类问题?

python sql floating-point precision decimal

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