该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)
有这样的功能吗?
我使用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下,错误是:
Run Code Online (Sandbox Code Playgroud)Error in postgresqlExecStatement(conn, statement, ...) : RS-DBI driver: (could not Retrieve the result : ERROR: invalid input syntax for integer: "NULL" )
替换NA对我来说没问题,但它不是一种解决办法 - 文字'NA'被写入数据库.
使用例如整数(0)给出相同的"期望字符串"消息.
当前正在运行版本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)
对于每个用户,的组合word和num必须是唯一的。
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)