在Python中使用MySQLdb库作为变量进行数据库查询

2024-04-25 01:16:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我想把所有数据保存在字典中(或者其他任何有用的东西),并将所有添加到变量中的变量插入mysql数据库。问题是,我不知道会有多少变量。在

看起来是这样的:

cur.execute("INSERT INTO db_name(keys) VALUES (dict[key])")

我的程序中有很多东西,有些是布尔变量(True,False),有些是整数,其他的是字符串。默认情况下,我可以这样添加它们:

^{pr2}$

如您所见,对于字符串和整数“%s”,对于布尔值,它必须是%s而不带“”

原因是,若找不到变量,它在数据库中必须为NULL,但我不知道如何将字符串和整数变量添加为NULL,因为它使用“%s”将它们作为字符串插入。在

类似的东西:(不是python代码,只是syntaxis思想)

cur.execute("INSERT INTO db_name( data.keys() ) VALUES ( data.values() ) ")

Tags: 数据字符串name数据库executedbdata字典
2条回答

感谢大家的帮助,使用格式函数解决问题:

query = "INSERT INTO shData("
query_v = "VALUES ("
for key in q_i:
    query += key + ','
    if isinstance(q_i[key],str):
        query_v += "'{" + key + "}',"
    else:
        query_v += "{" + key + "},"
query = query.rstrip(",")
query_v = query_v.rstrip(",")
query = query + ") " + query_v + ") "
cur.execute(query.format(**q_i))

这是因为您在引号中使用了%s占位符,并且还传递了一个字符串NULL,而不是空值(python中的None

更正版本为:

    cur.execute(""" INSERT INTO db_name(a, b, c, d)
    VALUES
    (%s, %s, %s, %s) """, ('abc', 123, True, None)   
 # no quotes on %s , and None instead of 'NULL'

参见文档here

相关问题 更多 >