Python中的MySQL插入和查询语句

-1 投票
3 回答
1496 浏览
提问于 2025-04-18 07:06

我有一个很大的数据库,想把它分开。这个数据库里有一列,每一行要么是“竞标”,要么是“立即购买”。我想把这个表分成两个表。我原本打算用一个SQL语句,比如INSERT INTO newtable WHERE row[5] = 'bid',来实现这个。但经过一些研究,我发现插入语句里好像没有WHERE这个条件。这个说法是真的吗?如果不是,我该怎么分开这个数据库呢?(顺便说一下,我用的是Python 2)

3 个回答

0

我不太确定我是否理解了这个问题……但是你不能在插入数据时使用WHERE。WHERE主要是用来指定你想要获取或修改哪些行的数据。

如果你想从表中获取所有在某一列(比如说第5行的'bid')中有特定值的条目,然后把这些条目插入到其他表里,你可以先用一个SELECT语句来获取这些值,条件是WHERE row[5]='bid'。也就是说,你可以这样写:SELECT * FROM currenttable WHERE row[5]='bid'。

接下来,在一个循环中,你可以使用INSERT INTO newtable (列名1, 列名2, 列名3) VALUES (值1, 值2, 值3)来插入数据,记得把列名和值替换成你新表中的实际列名和对应的值。

完成后,确认新表中有了正确的数据,你就可以从原来的表中删除所有不需要的条目了,方法是DELETE FROM currenttable WHERE row[5]='bid'。这样,你就成功把表分开了。

1

插入语句现在没有条件限制,但可以使用INSERT INTO SELECT语句来实现:

INSERT INTO newtable (...) SELECT ... FROM oldtable WHERE column = 'bid'

这段代码的意思是:从旧表中选择符合条件的数据,然后把这些数据插入到新表里。这里的条件是“column = 'bid'”,也就是说只选择那些在指定列中值为'bid'的数据。

1

为什么不先用 SELECT 语句选择每个组,然后再循环处理结果并用 INSERT 语句插入呢?

根据我们在聊天中的讨论,你可以这样做:

all = "SELECT * FROM listings1 WHERE auctionType IN ('Bid', 'BuyNow')" 
cursor.execute(all)
results = cursor.fetchall()
for row in results:
    if row['auctionType'] == 'Bid':
      #do your insert here
      insert = "INSERT INTO listings1 () VALUES (domainName, itemID)" % (row['domainName'], row['itemID'] etc etc)
      cursor.execute(insert)
    elif row['auctionType'] == 'BuyNow':
      #other insert here

另外,请注意你的 mysql 库很重要。你希望结果以字典的形式返回。想了解更多细节,可以查看这个回答: https://stackoverflow.com/a/8623947/1086938

撰写回答