我有一种情况,我经常需要从具有唯一约束的表中获取一行,如果不存在,则创建它并返回.例如我的表可能是:
CREATE TABLE names(
id SERIAL PRIMARY KEY,
name TEXT,
CONSTRAINT names_name_key UNIQUE (name)
);
Run Code Online (Sandbox Code Playgroud)
它包含:
id | name
1 | bob
2 | alice
Run Code Online (Sandbox Code Playgroud)
然后我想:
INSERT INTO names(name) VALUES ('bob')
ON CONFLICT DO NOTHING RETURNING id;
Run Code Online (Sandbox Code Playgroud)
也许:
INSERT INTO names(name) VALUES ('bob')
ON CONFLICT (name) DO NOTHING RETURNING id
Run Code Online (Sandbox Code Playgroud)
让它返回bob的id 1
.但是,RETURNING
只返回插入或更新的行.所以,在上面的例子中,它不会返回任何东西.为了让它按照需要运行,我实际上需要:
INSERT INTO names(name) VALUES ('bob')
ON CONFLICT ON CONSTRAINT names_name_key DO UPDATE
SET name = 'bob'
RETURNING id;
Run Code Online (Sandbox Code Playgroud)
这看起来有点麻烦.我想我的问题是:
不允许(我)期望行为的原因是什么?
有没有更优雅的方式来做到这一点?
我已经看到了很多关于使用LSTM进行张量流时间序列的指南,但我仍然不确定当前读取和处理数据的最佳实践 - 特别是当人们应该使用tf.data.Dataset
API时.
在我的情况下,我有一个文件data.csv
与我features
,并希望做以下两个任务:
计算目标 - 目标时间t
是某个范围内某些列的百分比变化,即
labels[i] = features[i + h, -1] / features[i, -1] - 1
Run Code Online (Sandbox Code Playgroud)
我想h
在这里成为一个参数,所以我可以尝试不同的视野.
滚动窗口 - 出于培训目的,我需要将我的功能滚动到长度为的窗口window
:
train_features[i] = features[i: i + window]
Run Code Online (Sandbox Code Playgroud)我很乐意使用pandas
或构建这些对象numpy
,所以我不会问如何实现这一点 - 我的问题是具体应该是什么样的管道tensorflow
.
编辑:我想我也想知道我列出的2个任务是否适合数据集api,或者我最好使用其他库来处理它们?
我想知道是否有一种很好的方法来定义一个函数captureOutput
,该函数接受一个f
可能包含print语句的函数并返回f
打印的内容.例如,
let f x = print "%s" x
let op = captureOutput (f "Hello World")
val op : string = "Hello World"
Run Code Online (Sandbox Code Playgroud)
我在想,或许有一种很好的方法可以异步地做到这一点,Console.ReadLine()
但我还没有能够解决任何问题.
干杯
编辑:
根据Fyodor Soikin的评论,下面的代码做了我想要的:
let captureOutput f x =
let newOut = new IO.StringWriter()
Console.SetOut(newOut)
f x
Console.SetOut(Console.Out)
newOut.ToString()
Run Code Online (Sandbox Code Playgroud) 假设我有一个带有年龄和名称列的用户表.我想写一个函数来查询这个表,要么选择所有内容,要么根据年龄进行选择.天真,我可能会这样做
def query(age=''):
query_args = ' WHERE {}'.format(age) if age else ''
db.execute('SELECT * FROM users' + query_args)
Run Code Online (Sandbox Code Playgroud)
显然这是一个可怕的想法,但我不确定处理这种情况的更好方法是 - 如果将年龄作为参数传递或者不是,那么编写单独的查询似乎非常难看,尤其是在更复杂的示例中我可能有多个查询参数.
postgresql ×2
csv ×1
f# ×1
preprocessor ×1
psycopg2 ×1
python ×1
sql ×1
tensorflow ×1
upsert ×1