使用PostgreSQL(v9.5),JSONB格式提供了很棒的机会.但现在我陷入了一个看似简单的操作;
比较两个jsonb对象; 看一个文档中哪个与另一个文档相比有什么不同或缺失.
到目前为止我有什么
WITH reports(id,DATA) AS (
VALUES (1,'{"a":"aaa", "b":"bbb", "c":"ccc"}'::jsonb),
(2,'{"a":"aaa", "b":"jjj", "d":"ddd"}'::jsonb) )
SELECT jsonb_object_agg(anon_1.key, anon_1.value)
FROM
(SELECT anon_2.key AS KEY,
reports.data -> anon_2.KEY AS value
FROM reports,
(SELECT DISTINCT jsonb_object_keys(reports.data) AS KEY
FROM reports) AS anon_2
ORDER BY reports.id DESC) AS anon_1
Run Code Online (Sandbox Code Playgroud)
应该返回第1行与第2行的差异:
'{"b":"bbb", "c":"ccc", "d":null}'
Run Code Online (Sandbox Code Playgroud)
相反,它也返回duplicates({"a": "aaa"}
).也; 一般来说可能会有更优雅的方法!
我有一个 Google Cloud 的 JSON 密钥文件,格式如下:
{
"type": "service_account",
"project_id": "###",
"private_key_id": "###",
"private_key": "-----BEGIN PRIVATE KEY-----\n
########################################
\n-----END PRIVATE KEY-----\n",
"client_email": "###@###.gserviceaccount.com",
"client_id": "###",
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
"token_uri": "https://oauth2.googleapis.com/token",
"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
"client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/###.gserviceaccount.com"
}
Run Code Online (Sandbox Code Playgroud)
我想access_token
使用常规 curl 命令而不是GCP Console或安装gcloud 工具来获得一段时间。
我希望是这样的:
{
"type": "service_account",
"project_id": "###",
"private_key_id": "###",
"private_key": "-----BEGIN PRIVATE KEY-----\n
########################################
\n-----END PRIVATE KEY-----\n",
"client_email": "###@###.gserviceaccount.com",
"client_id": "###",
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
"token_uri": "https://oauth2.googleapis.com/token",
"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
"client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/###.gserviceaccount.com"
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试从我的表中返回一个总和行,并使用总和结果进行排序。
我的 sql 是这样的:
self.db_user_online.query(
MeleeGameData,
func.sum(MeleeGameData.core_data).label("ct")
).\
group_by(MeleeGameData.ccid).\
filter_by(mid=self.cycle_id).\
order_by("ct desc").\
all()
Run Code Online (Sandbox Code Playgroud)
调试echo sql:
SELECT fiels..., sum(t_act_melee_game_data.core_data) AS ct
FROM t_act_melee_game_data
WHERE t_act_melee_game_data.mid = %s
GROUP BY t_act_melee_game_data.ccid
ORDER BY ct DESC
Run Code Online (Sandbox Code Playgroud)
但它不能工作..
我有一个带有日期时间索引的数字和非数字值的数据框:
df = pd.DataFrame([
{'date': datetime(2017, 4, 24, 1), 'a':1, 'b':2, 'c': "hee"},
{'date': datetime(2017, 4, 24, 2), 'a':2, 'b':4, 'c': 'hoo'},
{'date': datetime(2017, 4, 24, 3), 'a':4, 'b':8, 'c': 'joo'},
{'date': datetime(2017, 4, 24, 4), 'a':8, 'b':16, 'c': 'jee'}
]).set_index('date')
Run Code Online (Sandbox Code Playgroud)
我想要:
什么是最优雅的实现?
策略一
插入所有,然后fillna
:
df = df.resample('20T').interpolate('linear')
df.fillna(method='nearest')
Run Code Online (Sandbox Code Playgroud)
但是……该nearest
方法没有实现。
策略二
拆分数字和非数字列
df2 = df.resample('20T')
df_a = df2._get_numeric_data().interpolate('linear')
df_b = df2[list(set(df.columns) - set(set(df_a.columns)))].interpolate('nearest')
Run Code Online (Sandbox Code Playgroud)
这给出了一个错误:
类型错误:无法插入所有 NaN。
更新
使用最近方法进行插值确实适用于布尔值和数值,但不适用于字符串,例如:
df.resample('20T').intepolate('nearest')
Run Code Online (Sandbox Code Playgroud) 通过Operations> Kubernetes将我的Gitlab repo连接到我的自制Kubernetes集群之后,我想通过GUI安装Helm Tiller; 但我得到:
安装Helm Tiller时出错了
Kubernetes错误:configmaps"values-content-configuration-helm"已经存在
群集上没有正在运行的pod并kubectl version
返回:
客户端版本:version.Info {Major:"1",Minor:"11",GitVersion:"v1.11.2",GitCommit:"bb9ffb1654d4a729bb4cec18ff088eacc153c239",GitTreeState:"clean",BuildDate:"2018-08-07T23:17: 28Z",GoVersion:"go1.10.3",编译:"gc",平台:"linux/amd64"}
服务器版本:version.Info {Major:"1",Minor:"11",GitVersion:"v1.11.2",GitCommit:"bb9ffb1654d4a729bb4cec18ff088eacc153c239",GitTreeState:"clean",BuildDate:"2018-08-07T23:08: 19Z",GoVersion:"go1.10.3",编译:"gc",平台:"linux/amd64"}
更新
输出kubectl get cm --all-namespaces
:
NAMESPACE NAME DATA AGE
gitlab-managed-apps values-content-configuration-helm 3 7d
...
Run Code Online (Sandbox Code Playgroud)
删除此命名空间可以解决问题!
使用 postgresql v9.5 数据库,我想使用 sql dump 移动表pg_dump
:
pg_dump --host=localhost --username=postgres --port=5432 --dbname=my_db -t ,my_table > /D:\my_table.sql
Run Code Online (Sandbox Code Playgroud)
该表有一个UUID 标识符列:
CREATE TABLE public.my_table
(
uuid uuid NOT NULL DEFAULT gen_random_uuid(),
created timestamp with time zone DEFAULT now(),
content text,
)
Run Code Online (Sandbox Code Playgroud)
加载.sql
这适用于没有 UUID 列的表:
cd C:\Program Files (x86)\PostgreSQL\9.5\bin
psql --dbname=my_db --host=localhost --username=postgres -w --port=5432 -f D:\my_table.sql
Run Code Online (Sandbox Code Playgroud)
但是对于带有 UUID 列的特定表,我在第一个 UUID 的位置收到以下错误:
psql:D:\my_table.sql:1327: 错误:“c9ccacd8”处或附近的语法错误
第 1 行:c9ccacd8-7e37-40a2-8eca-e589dbe42a59 2016-06-04 09:48:00.676...
sql文件
以下是 my_table.sql 文件中引用的行:
ALTER TABLE my_table OWNER TO postgres; …
Run Code Online (Sandbox Code Playgroud) 我用 jQuery 构建了一个动态表单;当第一个选择输入(名为category
)更改时,第二个选择输入(名为subcategory
)会出现并带有子选择项。现在这很完美。
当给出特定的 url 参数时,我想在页面准备好后自动填写表单。
$(document).ready(function () {
// initialize defaults
var category = getUrlParameter('category');
var subcategory = getUrlParameter('subcategory');
if (category && subcategory) {
$("select#category").val(category).change();
$("select#subcategory").val(subcategory).change();
}
});
Run Code Online (Sandbox Code Playgroud)
我从Sameer KazigetUrlParameter
复制的辅助函数在哪里。
当前第一个选择输入已填充,第二个选择输入已生成但未填充。因此实际上,更改命令需要等到第一个更改命令准备好。
是否可以传递不可变Pydantic Models的函数设置器。
例如:
from uuid import uuid4, UUID
from pydantic import BaseModel
from datetime import datetime
def generate_uuid():
return uuid4()
def get_datetimenow():
return datetime.now()
class Item(BaseModel):
class Config:
allow_mutation = False
extra = "forbid"
id: UUID
created_at: datetime
Run Code Online (Sandbox Code Playgroud)
我想要方法generate_uuid
并get_datetimenow
设置属性。
>>> Item()
ValidationError: 2 validation errors for Item
id
field required (type=value_error.missing)
created_at
field required (type=value_error.missing)
Run Code Online (Sandbox Code Playgroud)
虽然我想获取一个Item
对象id
并created_at
自动设置。与运行时的结果相同:
>>> Item(id=generate_uuid(), created_at=get_datetimenow())
Item(id=UUID('8f898730-3fad-4ca9-9667-c090f62a2954'), created_at=datetime.datetime(2021, 1, 19, 21, 13, 7, 58051))
Run Code Online (Sandbox Code Playgroud) 我有一个整数毫秒的 numpy 数组,我想通过 timedelta 操作将其转换为 Python 日期时间数组。
以下 MWE 有效,但我相信有比乘以 1 毫秒更优雅的方法或性能更好的方法。
start = pd.Timestamp('2016-01-02 03:04:56.789101').to_pydatetime()
dt = np.array([ 19, 14980, 19620, 54964615, 54964655, 86433958])
time_arr = start + dt * timedelta(milliseconds=1)
Run Code Online (Sandbox Code Playgroud) datetime ×2
gitlab ×2
pandas ×2
postgresql ×2
python ×2
python-3.x ×2
curl ×1
gcloud ×1
gitlab-ci ×1
google-oauth ×1
javascript ×1
jquery ×1
jsonb ×1
kubernetes ×1
mysql ×1
numpy ×1
oauth ×1
pydantic ×1
sqlalchemy ×1
uuid ×1