Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python和SQL—检查行是否存在的最有效方法—如果不存在,则插入行_Python_Mysql_Python 2.7_Insert - Fatal编程技术网

Python和SQL—检查行是否存在的最有效方法—如果不存在,则插入行

Python和SQL—检查行是否存在的最有效方法—如果不存在,则插入行,python,mysql,python-2.7,insert,Python,Mysql,Python 2.7,Insert,我想检查什么是最有效的Python方法(因为性能),如何检查SQL中是否存在某些行,如果不存在,则插入它。 我想检查表中是否存在某个值的行,若不存在,则插入该行。 我是这样做的,但我想知道是否有更好的办法 insertValue="test" mycursor.execute("SELECT * from CUSTOMERS where name ="+'insertValue') myresult2 = mycursor.fetchall() if not my

我想检查什么是最有效的Python方法(因为性能),如何检查SQL中是否存在某些行,如果不存在,则插入它。 我想检查表中是否存在某个值的行,若不存在,则插入该行。 我是这样做的,但我想知道是否有更好的办法

  insertValue="test"        
  mycursor.execute("SELECT * from CUSTOMERS where name ="+'insertValue')
  myresult2 = mycursor.fetchall()
  if not myresult2:
    print 'Row does not EXIST'
    mycusrsor.execute(.....INSERT part for insertValue in table TABLE_2.....)
这是Python执行的最佳方法(代码优化),还是可以以更高效的方式(从Python代码优化的角度)执行
感谢您使用的标签,您似乎正在使用“MYSQL”。它提供了一个选项“INSERT IGNORE”,这意味着如果该键已经存在,它将不会抛出执行错误,并将转到下一行


这将被证明是最有效的方法,并且只需要很少的代码。

第一个优化是不要使用
SELECT*
,而是执行
SELECT
第二个,在
name
列上添加索引。我从Python的角度考虑的更多,是针对执行的代码优化,而不是SQL。对不起,误会了。我现在更详细地说明了这一点,它只有在
name
为PK或
name
设置为UNIQUEName为not PK且未设置为UNIQUEDo时才起作用。请在手边提及此类约束