是否必须引用MySQL查询中的每个值?

时间:2014-03-24 04:01:28

标签: python mysql mysql-python

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')

谢谢。

3 个答案:

答案 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作为表名,则需要在反引号中将其转义。