Python中的MySQL INSERT语句

时间:2017-02-15 14:54:58

标签: python mysql sql-insert

我正在尝试使用Python插入MySQL数据库,但我有一个自动增量列(TeamID)。我正在使用下面的线条,它就像一个魅力。但我不想在我的Python脚本中指定TeamID,因为它是一个自动增量

尝试:

cur.execute ("INSERT INTO teams values (%d, '%s', %d, '%s')" % (11,"Sevilla", 7, "Jorge Sampaoli"))
db.commit()

这完美无缺

我怎样才能摆脱第一个%d和11?我希望通过脚本

自动添加此值

非常感谢任何帮助

编辑:

#!/usr/bin/python 
import MySQLdb 
db = MySQLdb.connect(host="localhost", # your host, usually localhost  
    user="username", # your username 
    passwd="password", # your password 
    db="dbname") # name of the data base 
cur = db.cursor() 
try: 
    cur.execute ("INSERT INTO teams values ('%s', %d, '%s')" % ("Sevilla", 7, "Jorge Sampaoli")) 
    db.commit() 
except Exception as e: 
    print("Rolling back") 
    print(e) 
    db.rollback() 
db.close()

2 个答案:

答案 0 :(得分:1)

问题现已解决

我确实指定了列名,但没有注意到我需要对所有列使用%s,包括int值。如下:

cur.execute("INSERT INTO teams (TeamName, CountryID, TeamManager) values (%s,%s,%s)", ('Everton', 1, 'Ronald Koeman'))

答案 1 :(得分:0)

尝试

INSERT INTO teams (name, numb, player) VALUES ('%s', %d, '%s')

即明确列出列。 另外请不要这样做 - 而不是做'%s'你真的需要使用预准备语句,我认为在Python中它是这样的:

cursor.execute("INSERT INTO teams (name, numb, player) VALUES (%s, %d, %s)", ['Sevilla', 7, 'John Smith'])

阅读SQL注入。