小编Lud*_*udo的帖子

重复键值违反唯一约束 - 尝试从 dask 数据帧创建 sql 表时出现 postgres 错误

问题之后,当我尝试从具有多个分区的 dask.dataframe 创建 postgresql 表时,出现以下错误:

IntegrityError: (psycopg2.IntegrityError) duplicate key value violates unique constraint "pg_type_typname_nsp_index"
DETAIL:  Key (typname, typnamespace)=(test1, 2200) already exists.
 [SQL: '\nCREATE TABLE test1 (\n\t"A" BIGINT, \n\t"B" BIGINT, \n\t"C" BIGINT, \n\t"D" BIGINT, \n\t"E" BIGINT, \n\t"F" BIGINT, \n\t"G" BIGINT, \n\t"H" BIGINT, \n\t"I" BIGINT, \n\t"J" BIGINT, \n\tidx BIGINT\n)\n\n']
Run Code Online (Sandbox Code Playgroud)

您可以使用以下代码重新创建错误:

import numpy as np
import dask.dataframe as dd
import dask
import pandas as pd
import sqlalchemy_utils as sqla_utils
import sqlalchemy as sqla
DATABASE_CONFIG = {
    'driver': '',
    'host': '',
    'user': …
Run Code Online (Sandbox Code Playgroud)

python postgresql pandas dask pandas-to-sql

8
推荐指数
1
解决办法
1万
查看次数

使用map_partitions和pd.df.to_sql从dask数据框创建sql表

Dask没有像pandas这样的df.to_sql(),因此我正在尝试复制该功能并使用该map_partitions方法创建sql表。这是我的代码:

import dask.dataframe as dd
import pandas as pd
import sqlalchemy_utils as sqla_utils

db_url = 'my_db_url_connection'
conn = sqla.create_engine(db_url)

ddf = dd.read_csv('data/prod.csv')
meta=dict(ddf.dtypes)
ddf.map_partitions(lambda df: df.to_sql('table_name', db_url, if_exists='append',index=True), ddf, meta=meta)
Run Code Online (Sandbox Code Playgroud)

这将返回我的dask dataframe对象,但是当我查看我的psql服务器时,没有新表...这里出了什么问题?

UPDATE 仍然无法使其正常工作,但是由于独立问题。后续问题:重复的键值违反唯一约束-尝试从dask数据帧创建sql表时出现postgres错误

python postgresql pandas dask pandas-to-sql

7
推荐指数
1
解决办法
1244
查看次数

如何使用 bitbucket 管道和分支实现语义版本控制?

我有一个 python 应用程序,我想实现语义版本控制:MAJOR.MINOR.PATCH.BUILD。我想通过 bitbucket 管道尽可能地自动化它。

我将在下面回答我自己的问题,与其他人分享由于博客文章/资源的稀缺性,我是如何做到这一点的。

bash bitbucket bitbucket-pipelines

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

bitbucket 管道步骤必须是顺序的吗?

我在管道中设置了多个带有手动触发器的步骤。它只会让我触发第一步。这是因为我需要触发所有前面的步骤来运行给定的步骤吗?有没有解决的办法?要设置多个手动步骤,无论顺序如何,我都可以随时触发?

git yaml bitbucket bitbucket-pipelines

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

aws apigateway 更新集成 cli 错误

我正在从 aws 复制一个确切的示例,以通过 cli 将集成请求基础映射上传到我的 api,但出现错误。

这是命令: aws apigateway update-integration --rest-api-id a1b2c3d4e5 --resource-id a1b2c3 --http-method POST --patch-operations op='replace',path='/requestTemplates/application~1json',value='{"example": "json"}'

这是错误:

Error parsing parameter '--patch-operations': Expected: '=', received: '"' for input:
op=add,path=/requestTemplates/application~1json,value={"example": "json"}
                                                       ^
Run Code Online (Sandbox Code Playgroud)

这是我找到命令的地方:https : //docs.aws.amazon.com/cli/latest/reference/apigateway/update-integration.html

到底是怎么回事?

amazon-web-services aws-cli aws-api-gateway

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

使用字典灵活选择 pandas 数据帧行

假设我有以下数据框:

df = pd.DataFrame({'color':['red', 'green', 'blue'], 'brand':['Ford','fiat', 'opel'], 'year':[2016,2016,2017]})

        brand   color   year
0       Ford    red     2016
1       fiat    green   2016
2       opel    blue    2017
Run Code Online (Sandbox Code Playgroud)

我知道要选择使用多列,我可以执行以下操作:

new_df = df[(df['color']=='red')&(df['year']==2016)]
Run Code Online (Sandbox Code Playgroud)

现在我想做的是找到一种方法使用字典来选择我想要的行,其中字典的键表示映射到允许值的列。例如,在 df 上应用以下字典{'color':'red', 'year':2016}将产生与 new_df 相同的结果。

我已经可以用 for 循环来做到这一点,但我想知道是否有更快和/或更“ Pythonic ”的方法来做到这一点!

请包括该方法所花费的时间。

python select dataframe python-3.x pandas

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

使用python获取两个日期之间的周数

我想找到最 Pythonic 的方式来输出两个日期之间的周数列表。

例如:

输入

start = datetime.date(2011, 12, 25) 
end = datetime.date(2012, 1, 21)
Run Code Online (Sandbox Code Playgroud)

输出

find_weeks(start, end)
>> [201152, 201201, 201202, 201203]
Run Code Online (Sandbox Code Playgroud)

我一直在努力使用 datetime 库,但收效甚微

python datetime timedelta rrule

4
推荐指数
1
解决办法
3583
查看次数

为什么在 requirements.txt 中包含依赖项的依赖项是最佳实践?

我明白在许多情况下,明确说明我们正在使用的依赖版本很重要,因此这也适用于嵌套依赖。

然而,当我们决定删除一个依赖项并且需要使用类似 pideptree 的东西来确定它是否有任何我们也安装的自己的依赖项时,它变得非常混乱,另外还要确保这些嵌套的依赖项没有被我们的其他依赖项使用一级依赖。

假设我们不需要冻结我们的依赖版本,包含嵌套依赖而不是让 pip 为我们处理它有什么好处?

python dependencies pip python-3.x requirements.txt

3
推荐指数
1
解决办法
1052
查看次数

在Docker Hub上共享多容器应用程序的最简单方法是什么?

我有一个完全Docker化的应用程序,具有多种服务:前端,后端,用户服务,多个数据库等...

我使用docker-compose.yml文件编排一切。我现在正尝试与不具备CS /编码知识的人共享该应用程序,以便他们要做的就是从docker hub拉该应用程序并输入命令docker-compose up或类似命令。

我正在寻找最好的方法来做到这一点,而我却迷失了成群,捆绑,堆栈,服务等的docker词典...

共享以docker-compose.yml文件开头的图像集合的最佳实践是什么?

docker dockerhub docker-compose docker-swarm

3
推荐指数
1
解决办法
600
查看次数

索引和列上的熊猫 df.rename 并不总是有效

我有一个数据框列表,我遍历它们,使用一个 Pandasdf.rename方法调用重命名所有列/索引。

df.rename(
    {
        'vol': 'Volume Sales',
        'val': 'Value Sales',
    },
    index={
        't1': info['literal_periods'][0],
        't2': info['literal_periods'][1],
        'acv': '% ACV Distribution',
        'aic': 'Average Items Carried',
        'tdp': 'Total Distribution Points',
        'vol': 'Volume Sales',
        'psl': 'Promo Sales',
        'Share of AIC': '{} share of {} AIC'.format(
            info['name'], info['p1']),
        'Share of TDP': '{} share of {} TDP'.format(
            info['name'], info['p1']),
        'Target Product': info['name'],
        'target product': info['name'],
    },
    columns={
        't1':
        info['literal_periods'][0],
        't2':
        info['literal_periods'][1],
        'promo change':
        '% change from ya',
        'non promo change':
        '% change from …
Run Code Online (Sandbox Code Playgroud)

python rename dataframe python-3.x pandas

3
推荐指数
1
解决办法
5730
查看次数