这可能听起来有点不太现实,但我最近不得不研究远程维护系统的数据库结构,当我想找到链接到给定表的所有列时,我发现有一些情况. (参见,原始开发人员没有创建显式关系,而是在列名中编码关系!).
例如,假设所有引用列的列parent.parent都具有表单table.somefield_parent作为记录两个字段之间关系的方法,那么如何使用标准SQL命令/内置函数来查找所有这些关系(以及所涉及的表)?
任何MySQL或PostgreSQL的解决方案都是受欢迎的.
注意 :
我使用谷歌应用引擎构建了一个应用程序.该应用程序工作正常,但我正在考虑优化它,特别是我听说过持久化对象memcache而不是数据存储的概念,作为快速访问经常需要的数据的一种手段.
假设我有这个模型的对象:
class Ea(db.Model):
name = db.StringProperty()
code = db.StringProperty()
Run Code Online (Sandbox Code Playgroud)
我已经说过我要保留的以下实例 memcache
myea = Ea.new(name='John',code='@jo')
Run Code Online (Sandbox Code Playgroud)
我该怎么做?
我试图编写一个递归函数来做某事,但在每一步我都想知道树中当前的深度/索引.那么如何在不使用函数签名中的索引参数的情况下实现这一目的呢?
就像是:
rec_fn n = do print index
do_something n
if n > 0
then rec_fn (n-1)
else print "end"
Run Code Online (Sandbox Code Playgroud)
所以我如何获得index,而不做以下事情:
rec_fn n i = do print i
do_something n
if n > 0
then rec_fn (n-1) (i+1)
else print "end"
Run Code Online (Sandbox Code Playgroud) 我知道我可以使用python自己的功能工具集,但我希望在Django中有一种方法.
我有这个型号:
class AssetGeoFenceEvent(models.Model):
#...
#assets, for which this event is assigned
asset = models.ForeignKey(Asset)
#...
Run Code Online (Sandbox Code Playgroud)
并且引用的Asset模型如下:
class Asset(models.Model):
#...
client = models.ForeignKey(Client)
#....
Run Code Online (Sandbox Code Playgroud)
我以为我能做到:
#get all the registered events for this client
events = AssetGeoFenceEvent.objects.filter(asset.client == client)
Run Code Online (Sandbox Code Playgroud)
但是失败了,错误:
关键字不能是表达式
试过这个,但它失败了:
#get all the registered events for this client
events = AssetGeoFenceEvent.objects.filter(lambda a: a.client == client)
Run Code Online (Sandbox Code Playgroud)
这给了我一个错误
'function'对象不可迭代
那么我怎么能用Django来解决这个问题呢?