我有以下变量生成SQL语句的关键字尽量使自动生成SQL语句在Python蟒蛇给出列表
_SQL_fields = ("ID", "NAME", "BIRTH", "SEX", "AGE")
_add_SQL_desc_type = ("PRIMARY KEY AUTOINCREASEMENT",)
_SQL_type = ("INT",'TEXT')
_Value = (1,'TOM',19700101,'M',40)
bop = ["AND"] * (len(_SQL_fields) - 1)
mop = ["="] * 5
comma = [","] * 4
exception_field = ["NAME", "BIRTH"]
成功设计一个SQL语句,我需要低于上述变量生成的字符串:
'(ID, NAME, BIRTH, SEX, AGE)'
'(ID PRIMARY KEY AUTOINCREASEMENT INT, NAME TEXT, BIRTH, SEX, AGE)'
'ID = 1 AND NAME = "TOM" AND BIRTH = "19700101" AND SEX = "M" AND AGE = '40''
除去exception_field串可以看起来像
'(ID, SEX, AGE)'
'(ID PRIMARY KEY AUTOINCREASEMENT INT, SEX, AGE)'
'ID = 1 AND SEX = "M" AND AGE = '40''
= =========
到目前为止,我使用类似
str(zip(_SQL_fields,_add_SQL_desc_type,_SQL_type,comma))
或使用
", ".join(_SQL_fields)
得到一个。
但是,当处理“逗号”和“引号”时尤其如此。
'(ID, NAME, BIRTH, SEX, AGE)' <===== this is OK for SQL
'(ID, NAME, BIRTH, SEX, AGE,)' <===== this is NOT
这
'ID = 1 AND NAME = "TOM" AND BIRTH = "19700101" AND SEX = "M" and AGE = '40'
^-some var need quotes and some do no need them.
因此,任何人可以分享我怎么写干净的代码生成上述字符串?
谢谢你的时间!
KC
你是否按照你所拥有的方式将变量绑定在变量上,还是在你的控制之下? – aaronasterling 2010-08-12 10:17:50
谢谢,这些字段和其他变量都在控制之下,但我希望它更加灵活,同时很多strA + strB + strC方式可能看起来太复杂。 坦率地说,以简单的方式,我可以直接将它传递给SQL查询,但可以这样写:'ID = 1 AND NAME =“TOM”AND BIRTH =“19700101”AND SEX =“M”AND AGE ='40''不是我想要的,我希望系统可以通过静态或动态方式给物流生成SQL。 – 2010-08-12 10:24:08
我强烈建议你看看ORM。我使用SQLAlchemy一段时间,发现它令人满意。我目前正在玩弄你想要的东西,我可以说这是具有挑战性的。这种方式存在元类,描述符和各种黑魔法。 – aaronasterling 2010-08-12 10:41:47