我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
?
假设我有以下表格:
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) 我按以下方式使用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
就会抛出该项目.有没有办法忽略这个例外?抛出异常时是否会中止整个事务?如果是,那么重写查询的最佳选择是什么,可能使用批量插入?
以下是我的查询:
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个独立的数据库.
架构:
CREATE TABLE friends(
user_id int,
friend_id int,
min int,
max int
);
CREATE TABLE posts(
id int, …
Run Code Online (Sandbox Code Playgroud) 考虑以下:
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) 我正在使用PostgreSQL和Flas-SQLAlchemy
Flask扩展名。
#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
出错了。
我按照本教程进行操作,以便通过Digitalocean.com设置CloudFlare。但是,我遇到以下问题:
从Chrome浏览器访问我的网站时,我发现没有任何迹象表明CloudFlare正在为我工作。响应上没有CF-RAY
或cloudflare nginx
标题。Claire扩展也显示CloudFlare未处于活动状态。但是,当我使用WebPagetest测试网站时,我可以看到CloudFlare缓存系统提供了所有的javascript文件。
假设我有下表:
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 ×5
sql ×4
python ×2
base64 ×1
cloudflare ×1
data-uri ×1
flask ×1
go ×1
mysql ×1
neo4j ×1
psycopg2 ×1
sql-limit ×1
sqlalchemy ×1