我正在使用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)
失败,错误:
错误:"."或附近的语法错误.
"." 下划线是'域'和'旧'之间的一个
假设您要在对象上存储"标签"(例如,帖子).在9.4版本中,您有3个主要选择:
在许多情况下,第3个将是不可能的,因为它不允许查询条件为"标签"值.在我目前的开发中,我不需要这样的查询,标签只在帖子列表中显示,而不是过滤帖子.
所以,选择主要是在text[]
和之间jsonb
.两者都可以查询.
你会用什么?为什么?
关注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"时出现相同的错误.
目前我有类似的东西
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
或者password
是None
,user
仍然被实例化(空,但仍然存在,所以if user:
测试为真).
如何将我不会实例基于特定参数的对象?
AFAIU和文档,RealDictCursor是一个专门的DictCursor,它只能从密钥(也就是列名)访问列,而DictCursor允许从密钥或索引号访问数据.
我想知道为什么如果DictCursor提供更多的灵活性,RealDictCursor已被实现?它在性能方面(或记忆方面)如此不同(有利于我想象的RealDictCursor)?
换句话说,RealDictCursor用例与DictCursor有什么关系?
我怀疑许多研究时间序列数据的人已经遇到过这个问题,而且大熊猫似乎没有提供直接的解决方案(还有!):
假设:
所以对于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的滚动频率在时间序列的最后一天得到锚定?
我有一个映射数据库对象的类
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) 想象你有一个名为"filename"的大日志文件
如果您使用tail -f filename,那么只有在filename更新时才会有一个流
如果您使用cat filename,那么您有一个流,但如果您的CPU比intel 8088新,则无法读取它
如果你cat filename | 更多的是你有一个页面,一页一页,可能会打破你的空格键
如何以给定的速率列出文件(例如:每0.05秒一行)所以我有时间阅读,但我不需要按空格键数百次?
(我不使用| grep,因为在我的特殊情况下,我不知道究竟要搜索什么)
假设有一个具有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,那么你不必修改签名)
我有一个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) 在python3中,我主要使用float或np.float32 / 64,当将其存储到数据库中时,即使SQL类型为Numeric / Decimal,我们最终也会得到0.400000000000021或类似的值而不是0.4,
这可能是一个问题这些数据是从另一个应用程序访问的。
仅使用十进制.python中的十进制对我们来说不是答案,因为我们大量利用了熊猫,并且不支持十进制。
一种解决方案是在插入SQL之前将float转换为Decimal(在我们的例子中为SQL Server,但这是一个细节)。然后从十进制返回到SELECT之后的浮点数。
您是否有另一种(更好的方法)来处理此类问题?