我有两个表from PIL import Image,ImageDraw,ImageFont
import os
#setting varibles
imgFile = "frame_0.jpg"
output = "frame_edit_0.jpg"
font = ImageFont.truetype("arial.ttf", 30)
text = "SEQ_00100_SHOT_0004_FR_0001"
textColor = 'white'
shadowColor = 'black'
outlineAmount = 3
#open image
img = Image.open(imgFile)
draw = ImageDraw.Draw(img)
#get the size of the image
imgWidth,imgHeight = img.size
#get text size
txtWidth, txtHeight = draw.textsize(text, font=font)
#get location to place text
x = imgWidth - txtWidth - 100
y = imgHeight - txtHeight - 100
#create outline text
for adj in range(outlineAmount):
#move right
draw.text((x-adj, y), text, font=font, fill=shadowColor)
#move left
draw.text((x+adj, y), text, font=font, fill=shadowColor)
#move up
draw.text((x, y+adj), text, font=font, fill=shadowColor)
#move down
draw.text((x, y-adj), text, font=font, fill=shadowColor)
#diagnal left up
draw.text((x-adj, y+adj), text, font=font, fill=shadowColor)
#diagnal right up
draw.text((x+adj, y+adj), text, font=font, fill=shadowColor)
#diagnal left down
draw.text((x-adj, y-adj), text, font=font, fill=shadowColor)
#diagnal right down
draw.text((x+adj, y-adj), text, font=font, fill=shadowColor)
#create normal text on image
draw.text((x,y), text, font=font, fill=textColor)
img.save(output)
print 'Finished'
os.startfile(output)
和practice
,它们之间有一对多的关系,该关系是通过链接表facility
建立的。
我想要一个在json数组中聚合关系的“很多”部分的结果。以下查询会产生所需的结果:
查询
facility_practice
结果
select
practice.id
, practice.name
, practice.code
, json_arrayagg(json_object(
"id", facility.id
, "name", facility.name
, "code", facility.code
)) as facility_json
from practice
left join facility_practice
on facility_practice.practice_id = practice.id
left join facility
on facility.id = facility_practice.facility_id
where practice.id = 1
group by practice.id;
如果我+----+------+-------+---------------------------------------------------------------------------------------------+
| id | name | code | facility_json |
+----+------+-------+---------------------------------------------------------------------------------------------+
| 1 | Test | NA | [{"id": 1, "code": "NA", "name": "Test"}, {"id": 15, "code": "HV", "name": "Harbour View"}] |
+----+------+-------+---------------------------------------------------------------------------------------------+
进行上述查询,我将获得期望的结果:
说明
explain
如果我随后尝试根据该查询创建视图,则MySQL突然对练习表执行全表扫描。我注意到,如果删除查询的+----+-------------+-------------------+--------+-------------+
| id | select_type | table | type | key |
+----+-------------+-------------------+--------+-------------+
| 1 | SIMPLE | practice | const | PRIMARY |
+----+-------------+-------------------+--------+-------------+
| 1 | SIMPLE | facility_practice | ref | practice_id |
+----+-------------+-------------------+--------+-------------+
| 1 | SIMPLE | facility | eq_ref | PRIMARY |
+----+-------------+-------------------+--------+-------------+
部分,它将不再进行全表扫描;但是,结果不再正确(显然)。
查看
group by
说明
drop view if exists practice_facility_v;
create view practice_facility_v as
select
practice.id
, practice.name
, practice.code
, json_arrayagg(json_object(
"id", facility.id
, "name", facility.name
, "code", facility.code
)) as facility_json
from practice
left join facility_practice
on facility_practice.practice_id = practice.id
left join facility
on facility.id = facility_practice.facility_id
group by practice.id;
select * from practice_facility_v where id = 1;