小编nic*_*ted的帖子

Python请求base64图像

requests用来从远程URL获取图像.由于图像总是16x16,我想将它们转换为base64,以便我可以稍后嵌入它们以在HTML img标记中使用.

import requests
import base64
response = requests.get(url).content
print(response)
b = base64.b64encode(response)
src = "data:image/png;base64," + b
Run Code Online (Sandbox Code Playgroud)

输出response是:

response = b'GIF89a\x80\x00\x80\x00\xc4\x1f\x00\xff\xff\xff\x00\x00\x00\xff\x00\x00\xff\x88\x88"""\xffff\...
Run Code Online (Sandbox Code Playgroud)

HTML部分是:

<img src="{{src}}"/>
Run Code Online (Sandbox Code Playgroud)

但图像不显示.

我怎样才能正确地对64进行编码response

python base64 data-uri python-requests

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

PostgreSQL - string_agg,元素数量有限

是否可以限制以下string_agg功能中的元素数量?

 string_agg(distinct(tag),', ')
Run Code Online (Sandbox Code Playgroud)

sql postgresql aggregate-functions

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

选择连接表中的字段在每行中相同的行

假设我有以下表格:

CREATE TABLE parents (
    id int primary key
);

CREATE TABLE children (
    parent_id int,  --id from parents
    day int,
    status bool,
}

INSERT INTO parents (id) VALUES (1);
INSERT INTO children (parent_id, day, status) VALUES (1, 1, TRUE);
INSERT INTO children (parent_id, day, status) VALUES (1, 2, TRUE);

INSERT INTO parents (id) VALUES (2);
INSERT INTO children (parent_id, day, status) VALUES (2, 1, TRUE);
INSERT INTO children (parent_id, day, status) VALUES (2, 2, FALSE);

INSERT INTO parents (id) …
Run Code Online (Sandbox Code Playgroud)

mysql sql

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

Postgresql Python:忽略重复键异常

我按以下方式使用psycopg2插入项目:

cursor = connection.cursor()
for item in items:
    try:
        cursor.execute(
            "INSERT INTO items (name, description) VALUES (%s, %s)  RETURNING id",
            (item[0], item[1])
        )
        id = cursor.fetchone[0]
        if id is not None:
            cursor.execute(
                "INSERT INTO item_tags (item, tag) VALUES (%s, %s)  RETURNING id",
                (id, 'some_tag')
            )    
    except psycopg2.Error:
        connection.rollback()
        print("PostgreSQL Error: " + e.diag.message_primary)
        continue
    print(item[0])
connection.commit()
Run Code Online (Sandbox Code Playgroud)

显然,当一个项目已经在数据库中时,duplicate key exception就会抛出该项目.有没有办法忽略这个例外?抛出异常时是否会中止整个事务?如果是,那么重写查询的最佳选择是什么,可能使用批量插入?

python sql postgresql psycopg2

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

每组的最小行数

以下是我的查询:

SELECT *
FROM (
    SELECT f.max, f.min, p.user_id, p.id, p.title, p.rating,
    RANK() OVER (
        PARTITION BY p.user_id
        ORDER BY p.rating DESC, p.id DESC
    ) AS rnk
    FROM posts AS p
    INNER JOIN friends AS f ON (p.user_id = f.friend_id)
    WHERE f.user_id=1
) AS subq
WHERE (subq.rnk <= subq.max)
LIMIT 10
Run Code Online (Sandbox Code Playgroud)

它会搜索我朋友的帖子,按照评分和日期排序.在此查询中实现的窗口函数允许我根据表上的MAX字段限制为每个朋友返回的行数Friends.

但是,我还有一个字段MIN,用于指定给定朋友的查询所需的最小帖子数.怎么可能?

我也想知道SQL是否是这些类型查询的最佳选择?我已经尝试过Neo4j Graph数据库,虽然它似乎是一个很好的解决方案,但我宁愿避免使用2个独立的数据库.

SQLFiddle

架构:

CREATE TABLE friends(
    user_id int,
    friend_id int,
    min int,
    max int
);

CREATE TABLE posts(
   id int, …
Run Code Online (Sandbox Code Playgroud)

sql postgresql neo4j greatest-n-per-group sql-limit

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

去排序指针

考虑以下:

type Item struct {
    Title      string
    Date       time.Time
}  

type Items []Item

func (slice Items) Len() int {
    return len(slice)
}

func (slice Items) Less(i, j int) bool {
    return slice[i].Date.After(slice[j].Date)
}

func (slice Items) Swap(i, j int) {
    slice[i], slice[j] = slice[j], slice[i]
}
Run Code Online (Sandbox Code Playgroud)

在main方法中,我有一段指针Item,必须进行排序.我的尝试是:

items := make(Items, len(in.Items)) //in.Items is of type []*Item
for i, value := range in.Items {
    items[i] = *value
}

sort.Sort(items)

in.Items = make([]*Item, len(items))
for i, value := range items …
Run Code Online (Sandbox Code Playgroud)

go

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

Flask-SQLAlchemy关闭连接

我正在使用PostgreSQL和Flas-SQLAlchemyFlask扩展名。

#app.py

app = Flask(__name__)
app.config['SQLALCHEMY_POOL_SIZE'] = 20
db = SQLAlchemy(app)
Run Code Online (Sandbox Code Playgroud)

#views.py

user = User(***)
db.session.add(user)
db.session.commit()
Run Code Online (Sandbox Code Playgroud)

请注意,我没有按照文档建议关闭连接:

您必须提交会话,但不必在请求结束时将其删除,Flask-SQLAlchemy会为您完成该操作。

但是,当我运行以下PostgreSQL查询时,我可以看到一些IDLE连接:

SELECT * FROM pg_stat_activity;
Run Code Online (Sandbox Code Playgroud)

这是否意味着Flask-SQLAlchemy无法关闭连接有问题?我很担心,因为最近我remaining connection slots are reserved for non-replication superuser connections出错了。

postgresql sqlalchemy flask flask-sqlalchemy

2
推荐指数
1
解决办法
2598
查看次数

CloudFlare奇怪的行为

我按照教程进行操作,以便通过Digitalocean.com设置CloudFlare。但是,我遇到以下问题:

从Chrome浏览器访问我的网站时,我发现没有任何迹象表明CloudFlare正在为我工​​作。响应上没有CF-RAYcloudflare nginx标题。Claire扩展也显示CloudFlare未处于活动状态。但是,当我使用WebPagetest测试网站时,我可以看到CloudFlare缓存系统提供了所有的javascript文件。


在此处输入图片说明 在此处输入图片说明

cloudflare digital-ocean

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

使用INSERT ... ON CONFLICT DOHING RETURNING失败的行

假设我有下表:

CREATE TABLE tags (
    id int PK,
    name varchar(255),
    CONSTRAINT name_unique UNIQUE(name)
)
Run Code Online (Sandbox Code Playgroud)

我需要一个查询,它将插入不存在的标记,并为所有请求的标记返回id.考虑以下:

INSERT INTO tags (name) values ('tag10'), ('tag6'), ('tag11') ON CONFLICT DO NOTHING returning id, name
Run Code Online (Sandbox Code Playgroud)

此查询的输出是:

+---------------+
|  id   |  name |
|---------------|
|  208  | tag10 |
|---------------|
|  209  | tag11 |
+---------------+
Run Code Online (Sandbox Code Playgroud)

我需要的是tag6输出.

postgresql postgresql-9.5

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