【问题标题】:Updating a SQL table with Python 2.7?使用 Python 2.7 更新 SQL 表?
【发布时间】:2013-09-09 19:07:02
【问题描述】:

我正在使用 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  |
+-----------+----------+--------+

【问题讨论】:

  • 你想要什么,MySQL代码还是Python代码?
  • 我相信 MySQL 代码。据我了解,您只需将 MySQL 代码放入(MySQLdb.connect).cursor()。如果有人能给我一个包含 SQL 代码 和 Python 代码的工作示例,那就太好了。
  • 但是,你的名单上可以有重复的名字,例如,两个约翰?如果是,您如何识别要更新的寄存器?
  • 我认为有人可能会提到这一点,应该在问题中解决它。请记住,这是 sample 数据。在真实数据中,如果两个条目相同,则它们是重复的。没有两个条目应该是相同的。 (当然是在特定列下排序)

标签: python mysql sql python-2.7 mysql-python


【解决方案1】:

在this link 中有一个类似问题的非常好的答案。

根据您的上下文调整它,这可能是一个示例代码:

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()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-05-15
    • 2013-09-16
    • 2021-08-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多