我有两个MySQL表(产品和价格历史记录),我想加入:
Product 表:
Id = int
Name = varchar
Manufacturer = varchar
UPC = varchar
Date_added = datetime
Run Code Online (Sandbox Code Playgroud)
Price_h 表:
Id = int
Product_id = int
Price = int
Date = datetime
Run Code Online (Sandbox Code Playgroud)
我可以执行一个简单的LEFT JOIN:
SELECT Product.UPC, Product.Name, Price_h.Price, Price_h.Date
FROM Product
LEFT JOIN Price_h
ON Product.Id = Price_h.Product_id;
Run Code Online (Sandbox Code Playgroud)
但正如预期的那样,如果我在价格历史表中有多个产品条目,我会得到每个历史价格的一个结果.
如何构建一个只返回每个产品的一个实例的连接,只加入与它相关的价格历史表中的最新条目?
我试图在Python中动态导入配置文件.
我使用时代码工作正常:
import conf.config as config
Run Code Online (Sandbox Code Playgroud)
但是当我使用时无法正常工作:
config = __import__("conf.config")
Run Code Online (Sandbox Code Playgroud)
下面是示例程序以及运行它们时得到的结果:
#regularimport.py
import conf.config as config
def read_values(cfg):
for varname in cfg.__dict__.keys():
if varname.startswith('__'):
continue
value = getattr(cfg, varname)
yield (varname, value)
for name,value in read_values(config):
print "Current config: %s = %s" % (name, value)
Run Code Online (Sandbox Code Playgroud)
结果:
$python regularimport.py
Current config: SETTING_TWO = another setting
Current config: SETTING_ONE = some setting
Run Code Online (Sandbox Code Playgroud)
动态导入:
#dynamicimport.py
conf_str = "conf.config"
config = __import__(conf_str)
def read_values(cfg):
for varname in cfg.__dict__.keys():
if varname.startswith('__'):
continue
value = getattr(cfg, …Run Code Online (Sandbox Code Playgroud)