python根据给定列表生成SQL语句关键字

python根据给定列表生成SQL语句关键字,python,sql,list,keyword,Python,Sql,List,Keyword,我有以下变量试图在python中生成自动生成的SQL语句 _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

我有以下变量试图在python中生成自动生成的SQL语句

_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''
删除的异常字段字符串可能如下所示

'(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) 
去买一个

但我在处理“逗号”和“引号”时弄得一团糟

所以任何人都可以和我分享如何为生成上述字符串编写干净的代码

谢谢你的时间

KC

获得

'(ID PRIMARY KEY AUTOINCREASEMENT INT, NAME TEXT, BIRTH, SEX, AGE)'
您可以使用python中的itertools模块

然后,要删除获取列表中的异常字段,可以使用集合或列表理解

l1 = [1, 2, 3, 4]
l2 = [2, 3]
l3 = list(set(l1) - set(l2))
print l3
--> [1, 4]

l3 = [val for val in l1 if val not in l2]
print l3
--> [1, 4]
我建议你列一份清单

", ".join(_SQL_fields) 
是完美的获得

'ID, NAME, BIRTH, SEX, AGE'
所以我真的不明白你的问题。

获取

'(ID PRIMARY KEY AUTOINCREASEMENT INT, NAME TEXT, BIRTH, SEX, AGE)'
您可以使用python中的itertools模块

然后,要删除获取列表中的异常字段,可以使用集合或列表理解

l1 = [1, 2, 3, 4]
l2 = [2, 3]
l3 = list(set(l1) - set(l2))
print l3
--> [1, 4]

l3 = [val for val in l1 if val not in l2]
print l3
--> [1, 4]
我建议你列一份清单

", ".join(_SQL_fields) 
是完美的获得

'ID, NAME, BIRTH, SEX, AGE'

所以我真的不理解你的问题。

你是以你拥有的方式与变量联系在一起,还是在你的控制之下?谢谢,这些字段和其他变量都在控制之下,但我希望它更灵活,而且很多strA+strB+strC方式看起来可能太复杂了。坦率地说,用一种简单的方式,我可以写'ID=1,NAME=“TOM”和BIRTH=“19700101”,SEX=“M”和AGE=“40”,然后直接将其传递给SQL查询,但这不是我想要的,我希望系统可以通过静态或动态的方式生成SQL。我强烈建议您查看ORM。我使用了SQLAlchemy一段时间,发现它令人满意。我现在正在玩弄你想要的东西,我可以说这很有挑战性。这样就存在着元类、描述符和各种各样的黑魔法。我以前读过ORM模块,但发现它们可能不会将数据存储为plan db表,而且它们可能很重。我会继续努力的,谢谢!问题是,您编写的任何内容都可能很繁重,或者最终会像普通SQL一样不方便使用,并且不易维护。这里有很多拐弯的情况。你是按照你的方式与变量联系在一起,还是在你的控制之下?谢谢,这些字段和其他变量都在控制之下,但我希望它更灵活,而且很多strA+strB+strC的方式看起来可能太复杂了。坦率地说,用一种简单的方式,我可以写'ID=1,NAME=“TOM”和BIRTH=“19700101”,SEX=“M”和AGE=“40”,然后直接将其传递给SQL查询,但这不是我想要的,我希望系统可以通过静态或动态的方式生成SQL。我强烈建议您查看ORM。我使用了SQLAlchemy一段时间,发现它令人满意。我现在正在玩弄你想要的东西,我可以说这很有挑战性。这样就存在着元类、描述符和各种各样的黑魔法。我以前读过ORM模块,但发现它们可能不会将数据存储为plan db表,而且它们可能很重。我会继续努力的,谢谢!问题是,您编写的任何内容都可能很繁重,或者最终会像普通SQL一样不方便使用,并且不易维护。角落里有很多箱子。谢谢。我的问题现在可以通过ORM:SQLAlchemy解决了。谢谢ohe。我的问题现在可以通过ORM:SQLAlchemy解决了。