用于mysql语句的Python循环

时间:2010-12-24 03:56:04

标签: python loops

我有一个项目,我需要编译每个州的城市数量,并为mysql数据库创建一个插入语句。 我认为最简单的方法是通过python,但因为我是一个完整的菜鸟,我想在这里找到所有的python大师。 这是输入的样子。以下示例适用于佛罗里达州。

cities = ['Boca Raton', 'Boynton Beach', 'Bradenton', 'Cape Coral', 'Deltona']

这就是输出应该是什么。

INSERT INTO `oc_locations` (`idLocation`, `name`, `idLocationParent`, `friendlyName`) VALUES
(1, 'Florida', 0, 'Florida'),
(2, 'Boca Raton', 1, 'Boca Raton'),
(3, 'Boynton Beach', 1, 'Boynton Beach'),
(4, 'Bradenton', 1, 'Bradenton'),
(5, 'Cape Coral', 1, 'Cape Coral'),
(6, 'Deltona', 1, 'Deltona'),

如果仔细观察,“佛罗里达”的“idLocationParent”值为“0”,这意味着它是一个顶级值。这将是50个州所做的能力 如果有一个简单的方法,将状态名称插入到mysql语句中就会锦上添花。也是idLocation的字母顺序和自动增量 会很好。

以下是我想要实现连接的一个例子,这是我需要弄清楚的部分。

  

城市中的城市:打印   (1,'城市',0,'城市'),城市

这是我的解决方案

      cities = ['Naples', 'Ocala', 'Odesa', 'Oldsmar', 'Orlando', 'Pembroke Pines', 'Pompano beach', 'Port St lucie',
'Sarasota', 'St. Petersburg', 'Tallahasee', 'Tampa', 'Venice']

cities.sort() #For alphebetical sorting

for i in range(len(cities)):
    print '(' + str(i) +', ' + cities[i] + ', 1, ' + cities[i] + ')'

2 个答案:

答案 0 :(得分:1)

如果希望idLocation自动递增,请将其作为表的主键。我也会查看外键而不是将状态和城市放在同一个表中。

以下是一些代码可以让您接近所要求的内容:

cities.sort()
for i in range(len(cities)):
    print "(%d, '%s', 0, '%s')" % (i+1, cities[i], cities[i])

结果:

(1, 'Boca Raton', 0, 'Boca Raton')
(2, 'Boynton Beach', 0, 'Boynton Beach')
(3, 'Bradenton', 0, 'Bradenton')
(4, 'Cape Coral', 0, 'Cape Coral')
(5, 'Deltona', 0, 'Deltona')

答案 1 :(得分:1)

如果您想要解决方案:

cities.sort()
for i in range(len(cities)):
    print "(%d, '%s', 0, '%s')" % (i+1, cities[i], cities[i])

多一点pythonic,试试这个:

for i, city in enumerate(sorted(cities)):
    print "(%d, '%s', 0, '%s')" % (i+1, city, city)

但无论如何,我会为您的数据库使用特定的DB-API。如果您要插入城市O'Fallon, ILCoeur d'Alene, ID,会发生什么?它们包含撇号,会破坏您的'%s'格式逻辑并使INSERT语句无效。