小编Hoe*_*nie的帖子

psycopg2 - 将字典列表插入 PosgreSQL 数据库。处决太多?

我正在将字典列表插入 PostgreSQL 数据库。该列表将快速增长,dict 值(列)的数量约为 30。简化数据:

projects = [
{'name': 'project alpha', 'code': 12, 'active': True},
{'name': 'project beta', 'code': 25, 'active': True},
{'name': 'project charlie', 'code': 46, 'active': False}
]
Run Code Online (Sandbox Code Playgroud)

使用以下代码将数据插入 PostgreSQL 数据库确实有效(如本答案所示),但我担心执行太多查询。

projects = [
{'name': 'project alpha', 'code': 12, 'active': True},
{'name': 'project beta', 'code': 25, 'active': True},
{'name': 'project charlie', 'code': 46, 'active': False}
]
Run Code Online (Sandbox Code Playgroud)

有没有更好的做法?非常感谢您的帮助!

python postgresql psycopg2

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

“str”的 Pylint Django 模型实例没有成员

我正在为我的 Django 项目使用pylint-django,我的模型之一如下:

class Registration(models.Model):
    date_added = models.DateTimeField(auto_now_add=True)
    event = models.ForeignKey(Event, on_delete=models.CASCADE)
    user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)

    def __str__(self):
        first_name = self.user.first_name
        last_name = self.user.last_name
        return f'{first_name} {last_name}'
Run Code Online (Sandbox Code Playgroud)

运行pylint,我收到以下警告:

events/models.py:61:21: E1101: Instance of 'str' has no 'first_name' member (no-member)

从 pylint-django 的自述文件中,我了解到这是一个已知问题:

“如果您通过名称(作为字符串)引用外键模型,pylint-django 可能无法找到该模型并且会报告问题,因为它不知道该字段的基础类型是什么。”

我的问题是:我应该怎么做才能解决这个问题?我不想压制所有C0111警告。

非常感谢您的帮助!

PS:我正在使用 pylint-django 作为对使用 Pylint 与 Django 的回答

django pylint python-3.x

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

Pandas:加入部分字符串匹配,如Excel VLOOKUP

我试图在Python中执行一个与Excel中的VLOOKUP非常相似的操作.StackOverflow上有很多与此相关的问题,但它们与这个用例略有不同.希望任何人都可以指导我朝着正确的方向前进.我有以下两个pandas数据帧:

df1 = pd.DataFrame({'Invoice': ['20561', '20562', '20563', '20564'],
                    'Currency': ['EUR', 'EUR', 'EUR', 'USD']})
df2 = pd.DataFrame({'Ref': ['20561', 'INV20562', 'INV20563BG', '20564'],
                    'Type': ['01', '03', '04', '02'],
                    'Amount': ['150', '175', '160', '180'],
                    'Comment': ['bla', 'bla', 'bla', 'bla']})

print(df1)
    Invoice Currency
0   20561   EUR
1   20562   EUR
2   20563   EUR
3   20564   USD

print(df2)
    Ref         Type    Amount  Comment
0   20561       01      150     bla
1   INV20562    03      175     bla
2   INV20563BG  04      160     bla
3   20564       02      180     bla
Run Code Online (Sandbox Code Playgroud)

现在我想创建一个新的数据帧(df3),我根据发票号码将两者结合起来.问题是发票号码并不总是"完全匹配",但有时在df2 ['Ref']中是"部分匹配".因此,加入"发票"并未提供所需的输出,因为它不会复制发票20562和20563的数据,请参阅下文:

df3 = df1.join(df2.set_index('Ref'), …
Run Code Online (Sandbox Code Playgroud)

python join dataframe python-3.x pandas

6
推荐指数
1
解决办法
1218
查看次数

类 __str__ 的 Python 测试覆盖率

我有一个关于使用 PyCharm IDE 进行 Python 覆盖率测试的非常基本的问题。在我的 Django 模型中,__str__我的测试并未涵盖所有方法。

class Category(models.Model):
    name = models.CharField(max_length=100)

    def __str__(self):
        return self.name
Run Code Online (Sandbox Code Playgroud)

测试这些的适当方法是什么?

这不起作用,测试运行但该__str__方法仍然没有被视为被覆盖。

class TestCategory(TestCase):

    def test_category(self):
        category = Category.objects.create(name='Test Category')
        self.assertEqual(category.__str__(), 'Test Category')
Run Code Online (Sandbox Code Playgroud)

python django unit-testing coverage.py pycharm

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

Glassdoor API 登录不适用于 Python,响应 403 Bots not allowed

不幸的是,我收到错误消息:HTTP 状态 403 - 使用以下 Python 代码时不允许机器人。

import requests

URL = 'http://api.glassdoor.com/api/api.htm?v=1&format=json&t.p={PartnerID}&t.k={Key}&action=employers&q=pharmaceuticals&userip={IP_address}&useragent=Mozilla/%2F4.0'

response = requests.get(URL)

print(response)
Run Code Online (Sandbox Code Playgroud)

当我从浏览器尝试 URL 时,该 URL 确实有效。我该怎么做才能让它从代码中工作?

更新:已解决。

抱歉没有以正确的方式发布问题(我是新来的)。

python

0
推荐指数
1
解决办法
1223
查看次数