insert_query = u"""
INSERT INTO did_you_know (
name, to_be_handled, creator, nominator, timestamp)
VALUES ('{0}', '{1}', '{2}', '{3}', '{4}')
""".format("whatever", "whatever", "whatever", "whatever", "whatever")
就是我的榜样。
MySQL查询中的每个值都必须包含引号吗?
这是否可以接受?
INSERT INTO TABLE VALUES ('Hello', 1, 1, 0, 1, 'Goodbye')
谢谢。
答案 0 :(得分:3)
你的答案是否定的。:)
这是被接受的:当你好'并且'再见'是Varchar
或文字。和数字是整数或数字类型
INSERT INTO TABLE VALUES ('Hello', 1, 1, 0, 1, 'Goodbye');
在您的示例查询中就像。
insert_query = "
INSERT INTO did_you_know(
name,to_be_handled,creator,nominator,timestamp)
VALUES('varchar_value', interger_or_number_value, 'varchar_value');
喜欢那样。 :)
答案 1 :(得分:0)
您只需要引用字符和其他非整数数据类型 不需要引用整数数据类型。
答案 2 :(得分:0)
如果你遵循Python的标准做法,你不必担心逃避;它还可以防止数据库出现其他令人讨厌的问题。
Python有一个所有驱动程序都符合的标准DB API。在此API中,要将参数传递给查询,您需要将它们作为第二个参数传递给游标的执行函数,而不是将它们解析为字符串(您正在做什么)。
您的查询,正确编写将不必担心引用:
q = """INSERT INTO did_you_know (
name, to_be_handled, creator, nominator, timestamp)
VALUES (%s, %s, %s, %s, %s)"""
arg = "hello"
arg2 = "world"
cur.execute(q, ("foo","bar","zoo",arg,arg2,))
con.commit()
请记住,如果您使用任何MySQL的reserved words作为表名,则需要在反引号中将其转义。