首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从字典键更新MySQL行标题(Python)

问从字典键更新MySQL行标题(Python)
EN

Stack Overflow用户
提问于 2012-05-24 01:27:26
回答 1查看 329关注 0票数 1

我已经在Python2.x中编译了下面的脚本,它递归地搜索目录,对于找到的每个JPEG,解析出元数据并将其放入字典中。目前,输出只是打印到控制台:-

代码语言:javascript
复制
import os
import fnmatch
import pyexiv2

matches = []
dict1 = {}

# The aim of this script is to recursively search across a directory for all
# JPEG files. Each time a JPEG image is detected, the script used the PYEXIV2
# module to extract all EXIF, IPTC and XMP data from the image. Once extracted
# the key (ie. "camera make" is generated and it's respective value
# (ie. Canon) is then added as the value in a dictionary.

for root, dirnames, filenames in os.walk('C:\Users\XXX\Desktop'):
  for filename in fnmatch.filter(filenames, '*.jpg'):
      matches.append(os.path.join(root, filename))

for entry in matches:
    metadata = pyexiv2.ImageMetadata(entry)
    metadata.read()
    keys = metadata.exif_keys + metadata.iptc_keys + metadata.xmp_keys
    for key in keys:
        dict1[key] = metadata[key].raw_value

    print entry
    print str(dict1)

我要做的是将结果输出到MySQL DB。现在,我的问题是我没有一个不确定的元数据头列表,事实上,我很难找到一个,所以,对于我的表行标题,我希望比较字典键中的每个值(即。拍摄日期、制造商、型号等)如果它不存在于表中,则将其作为标题添加到我的表中,然后将EXIF数据(键值)输入到相应的列中。我以前通过Python使用过MySQL,但从来没有比较行头和从变量动态创建新的行头。

有谁能告诉我正确的方向吗?

EN

回答 1

Stack Overflow用户

发布于 2012-05-24 01:41:05

不是在MySQL表中添加新的数据键作为新列,而是创建一个具有三个列file、data_name和data_value的固定的单表,然后您就可以拥有每个文件的动态数据。

然后,您可以轻松地查询表,例如

代码语言:javascript
复制
select file from file_data where data_name = 'Serial' and data_value = 'ABCDE'

对于多个字段匹配,您可以执行自连接,例如

代码语言:javascript
复制
SELECT * from data t1 JOIN data t2 on t1.file_name = t2.file_name and t1.data_name = "data1" and t1.data_value="value1" and t2.data_name = "data2" and t2.data_value="value2" 

或者,您可以继续动态地向MySQL表追加列,例如

代码语言:javascript
复制
ALTER TABLE data ADD Serial VARCHAR(60);

您可以使用以下命令获取现有列名

代码语言:javascript
复制
SHOW COLUMNS FROM `data`; 

所以每次你看到一个新的数据字段时,都会将其添加为列。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10724944

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档