小编Jas*_*son的帖子

如何从日期字符串中确定合适的strftime格式?

dateutil分析器不正确的猜测从各种来源的日期和时间,一个伟大的工作.

我们正在处理文件,其中每个文件只使用一种日期/时间格式,但格式因文件而异.分析显示大量时间被使用dateutil.parser.parse.因为每个文件只需要确定一次,所以每次都可以实现不猜测格式的东西可以加快速度.

我事先并不知道格式,我仍然需要推断格式.就像是:

from MysteryPackage import date_string_to_format_string
import datetime

# e.g. mystring = '1 Jan 2016'
myformat = None

...

# somewhere in a loop reading from a file or connection:
if myformat is None:
    myformat = date_string_to_format_string(mystring)

# do the usual checks to see if that worked, then:
mydatetime = datetime.strptime(mystring, myformat)
Run Code Online (Sandbox Code Playgroud)

有这样的功能吗?

python datetime

26
推荐指数
3
解决办法
1927
查看次数

参数和NULL

我使用RPostgres和RPostgreSQL将NULL作为INSERT参数查询传递时遇到问题:

在PostgreSQL中:

create table foo (ival int, tval text, bval bytea);
Run Code Online (Sandbox Code Playgroud)

在R:

这有效:

res <- dbSendQuery(con, "INSERT INTO foo VALUES($1, $2, $3)", 
                   params=list(ival=1, 
                               tval= 'not quite null',
                               bval=charToRaw('asdf')
                               )
                    )
Run Code Online (Sandbox Code Playgroud)

但这会引发错误:

res <- dbSendQuery(con, "INSERT INTO foo VALUES($1, $2, $3)",
                   params=list(ival=NULL, 
                               tval= 'not quite null',
                               bval=charToRaw('asdf')
                               )
                   )
Run Code Online (Sandbox Code Playgroud)

使用RPostgres,错误消息是:

错误:期待一个字符串

在RPostgreSQL下,错误是:

Error in postgresqlExecStatement(conn, statement, ...) : 
RS-DBI driver: (could not Retrieve the result : ERROR:  invalid input
syntax for integer: "NULL"
)
Run Code Online (Sandbox Code Playgroud)

替换NA对我来说没问题,但它不是一种解决办法 - 文字'NA'被写入数据库.

使用例如整数(0)给出相同的"期望字符串"消息.

postgresql r

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

PostgreSQL-带有列子集的视图的ON CONFLICT UPDATE

当前正在运行版本9.5.3。当然,计划更新。

我有一个PostgreSQL数据库,该数据库的架构早于表行级安全性(即CREATE POLICY ...)。行级安全性是使用视图实现的。通过仅选择所有者名称匹配的行来在视图中完成安全性CURRENT_USER

我正在尝试使用这种视图来构建upsert查询。问题出在我试图命名时conflict_target

使用的问题ON CONFLICT UPDATE ...来自于命名违反了什么约束。

玩具实例

CREATE TABLE foo (id serial, num int, word text, data text, ownername varchar(64));
Run Code Online (Sandbox Code Playgroud)

对于每个用户,的组合wordnum必须是唯一的。

CREATE UNIQUE INDEX foo_num_word_owner_idx ON foo (num, word, ownername);
Run Code Online (Sandbox Code Playgroud)

使用基于当前用户名的视图来实现行级安全性。授予该视图权限,并删除普通用户的基础表权限。security_barrier是在v 9.5之后添加的。请注意,用户看不到ownername

CREATE VIEW foo_user WITH (security_barrier = True) AS
    SELECT id, num, word, data FROM foo 
    WHERE foo.ownername = CURRENT_USER;    
Run Code Online (Sandbox Code Playgroud)

现在自动设置所有者名称:

CREATE OR REPLACE FUNCTION trf_set_owner() RETURNS trigger AS
$$ …
Run Code Online (Sandbox Code Playgroud)

postgresql

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

标签 统计

postgresql ×2

datetime ×1

python ×1

r ×1