Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/343.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.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中CSV记录表中不存在,则插入记录_Python_Mysql_Database_Pymysql - Fatal编程技术网

如果PYTHON中CSV记录表中不存在,则插入记录

如果PYTHON中CSV记录表中不存在,则插入记录,python,mysql,database,pymysql,Python,Mysql,Database,Pymysql,我希望插入查询不做任何事情,如果它在csv文件中不是新的,如果是,我只想插入这一个,而不是再次所有的csv,任何建议都将是伟大的 PS:这与其他问题不一样,因为我们这里有“%s”没有稳定的值,在python中它的语法不同 cursorobject=connection.cursor() sql2="CREATE DATABASE IF NOT EXISTS mydb" cursorobject.execute(sql2) sql1="CREATE TABLE IF

我希望插入查询不做任何事情,如果它在csv文件中不是新的,如果是,我只想插入这一个,而不是再次所有的csv,任何建议都将是伟大的


PS:这与其他问题不一样,因为我们这里有“%s”没有稳定的值,在python中它的语法不同

    cursorobject=connection.cursor()
    sql2="CREATE DATABASE IF NOT EXISTS mydb"
    cursorobject.execute(sql2)
    sql1="CREATE TABLE IF NOT EXISTS users(id int(11) NOT NULL AUTO_INCREMENT,first_name varchar(255),last_name varchar(255),company_name varchar(255),address varchar(255),city varchar(255),country varchar(255),postal varchar(255),phone1 varchar(255),phone2 varchar(255),email varchar(255),web varchar(255),PRIMARY KEY(id))"
    cursorobject.execute(sql1)
    csvfile=open('Entries.csv','r')
    reader = csv.reader(csvfile,delimiter=',')

    for row in reader:
      cursorobject.execute("INSERT INTO users(first_name,last_name,company_name,address,city,country,postal,phone1,phone2,email,web) VALUES (%s ,%s, %s,%s,%s,%s,%s,%s,%s,%s,%s)",row)

在将记录输入数据库之前,对users表进行select查询,该表可能有名字和姓氏

您可以使用
插入select来执行此操作

INSERT INTO users
(first_name,last_name,company_name,address,city,country,postal,phone1,phone2,email,web)
SELECT %s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s FROM users WHERE NOT EXISTS
(SELECT * FROM users WHERE first_name=%s AND last_name=%s)

注意:正如您所说的,
%s
不是一个静态值,但是如果您执行sql,
%s
将根据您通过
%s

传递的参数转换为实际数据@RaymondNijland nop可能重复,这里我们有一些从csv插入的值“在python中,语法不同!”复制链接显示了在MySQL中需要执行的操作。。在Python中,SQL语法并没有什么不同,因为准备好的语句可能会出现这种情况。。。“这里我们有一些从csv中插入的值”,所以csv值仍然需要限制在准备好的语句中,因为你不相信,这会让你自己变得更难。。此外,@lucumt似乎根据我给出的复制链接给出了一个有效的答案。你能更具体一点吗?它会给我一个错误“格式字符串的参数不够”我认为两个额外的“%s”会混淆程序,因为行有11%s,不是吗13@laland根据您的问题,您需要向其传递足够的参数,参数计数应该是13,这意味着您需要传递
名字
姓氏
两次。请更具体一点,我知道我们有11%s,您使用13如何平衡它们?@laland
对于读卡器中的行:
变量行现在是字符串列表。。您需要执行类似于
row.append(row['first_name'];row.append(row['last_name'];
row.append(row[0];row.append(row[1];
)的操作来添加新的列表项。@RaymondNijland它不起作用,您能更具体一点吗?