Maison > Questions et réponses > le corps du texte
info = "'INSERT INTO brush_card_record(brush_card_date, brush_card_time, card_num_6061, card_num_6654) VALUES(?,?,?,?)',('2017-05-28','12:23:32', 123, 0) "
cur.execute(info)
Cela signalera une erreur : sqlite3.OperationalError
cur.execute('INSERT INTO brush_card_record(brush_card_date, brush_card_time, card_num_6061, card_num_6654) VALUES(?,?,?,?)',('2017-05-28','12:23:32', 123, 0 ))
Cela fonctionnera.
代言2017-06-12 09:29:56
cur.execute a deux paramètres, l'un est SQL et l'autre consiste à transmettre des valeurs aux paramètres SQL. Votre première phrase entre guillemets doubles est équivalente à une chaîne, c'est-à-dire un paramètre, et le deuxième paramètre ne l'est pas. passé
世界只因有你2017-06-12 09:29:56
info = "INSERT INTO brush_card_record(brush_card_date, brush_card_time, card_num_6061, card_num_6654) VALUES(%s,%s,%s,%s)"%('2017-05-28','12:23:32', 123 , 0)
或者str.format
曾经蜡笔没有小新2017-06-12 09:29:56
sqlite中是这么定义:
class Connection(object):
""" SQLite database connection object. """
def cursor(self, *args, **kwargs): # real signature unknown
""" Return a cursor for the connection. """
pass
class Cursor(object):
""" SQLite database cursor class. """
def execute(self, *args, **kwargs): # real signature unknown
""" Executes a SQL statement. """
pass
问题中的第一种方式无法自动解包
曾经蜡笔没有小新2017-06-12 09:29:56
La question a été trouvée, merci pour la réponse !
Lorsque l'insertion de nouvelles données dans la table de la base de données est dynamique, un meilleur moyen consiste à générer d'abord str, puis à la transmettre à cur.execute() en tant que paramètre.
Exemple de code :
insert_info = '''\
INSERT INTO %s(brush_card_date, brush_card_time, card_num_6061, card_num_6654) \
VALUES("%s", "%s", %s, %s)''' % (f_table_name, date, now_time, gold_6061, gold_6654)
cur.execute(insert_info)