Петля Питона для заявления MySQL - PullRequest
1 голос
/ 24 декабря 2010

У меня есть проект, который мне нужен, чтобы собрать количество городов в каждом штате и сделать оператор вставки для базы данных 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 ]

1 голос
/ 24 декабря 2010

Если вы хотите получить решение:

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

немного более питон, попробуйте это:

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

Но в любом случае я бы использовал конкретный DB-API для вашей базы данных. Что произойдет, если вы хотите вставить город O'Fallon, IL или Coeur d'Alene, ID? Они содержат апостроф, который нарушит вашу логику форматирования '%s' и сделает недействительным ваше утверждение INSERT.

1 голос
/ 24 декабря 2010

Если вы хотите, чтобы 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')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...