1

我正在使用 Python 2.7 从网页中提取信息(使用BeautifulSoup),对该信息进行排序并将其插入到 SQL 表中(使用MySQLdb)。这很简单,我可以从 SO 的其他地方找到很好的参考。

我的问题是我需要代码来搜索表格,如果信息已经存在,请更新它。但如果该信息不存在,则创建一条新记录。

例子:

Table
+-----------+----------+--------+
|   Name    |   Phone  |  Date  |
+-----------+----------+--------+
|   John    | 344-7989 |   9/1  |
+-----------+----------+--------+
| Alexander | 198-3333 |  8/16  |
+-----------+----------+--------+

网络爬虫在线查找新信息并将其存储到字典列表中:

[ 
   {
    "Name" : "Samantha",
    "Phone" : "788-3443",
    "Date" : "9/5"
   }, {
    "Name" : "John",
    "Phone" : "222-9009",
    "Date" : "9/5"
   }
]

现在,一条记录(Samantha)是全新的,不存在于表中。但是另一条记录(约翰)已经存在,但他的信息是更新的。使用此信息编辑表格并创建的代码是什么:

Final Table
+-----------+----------+--------+
|   Name    |   Phone  |  Date  |
+-----------+----------+--------+
|   John    | 222-9009 |   9/5  |
+-----------+----------+--------+
| Alexander | 198-3333 |  8/16  |
+-----------+----------+--------+
| Samantha  | 788-3443 |   9/5  |
+-----------+----------+--------+
4

1 回答 1

2

此链接中,类似问题有一个很好的答案。

使其适应您的上下文,这可能是一个示例代码:

CREATE TABLE Users (`name` varchar(35) unique, `phone` varchar(10), `date` date);

以及python代码的一个想法(使用MySQLdb):

...
cursor = connection.cursor()
cursor.execute("""
    INSERT INTO Users (name, phone, date)
    VALUES (%s,%s,%s)
    ON DUPLICATE KEY UPDATE phone = %s, date=%s;
    """,(name,phone,date,phone,date))
cursor.close()
于 2013-09-05T20:33:20.700 回答