Как мне закрыть многострочную переменную / комментарий в Python? - PullRequest
0 голосов
/ 05 августа 2009

Я получаю эту ошибку:

  File "/DateDbLoop.py", line 33  
    d.Id""" % (str(day), str(2840))"  
    ^  
SyntaxError: EOL while scanning single-quoted string  

Вот сценарий. Есть 4 двойные кавычки, чтобы открыть это, но я не уверен, как правильно закрыть это?

Вопрос по вопросу:

Должен ли этот% (str (day), str (2840)) указываться в переменной sql и вызове os.system ()?

#!/usr/bin/python

import datetime
import sys, os, time, string

a = datetime.date(2009, 1, 1)
b = datetime.date(2009, 2, 1)
one_day = datetime.timedelta(1)

day = a

while day <= b:

    print "Running query for \"" + str(day) + "\""

    sql=""""SELECT
        d.Date,  
        SUM(d.Revenue),  
        FROM Table d  
        WHERE d.Date = '%s'  
        AND d.Id = %s  
        GROUP BY d.Date  
        """ % (str(day), str(2840))"

    os.system('mysql -h -sN -u  -p -e %s > FileName-%s.txt db' % (sql, str(day)))
    day += one_day

Ответы [ 3 ]

5 голосов
/ 05 августа 2009

У вас есть 4 двойные кавычки в строке sql =, вместо этого сделайте их 3. Также удалите одиночную кавычку после значения% -подстановки.

#!/usr/bin/python

import datetime
import sys, os, time, string

a = datetime.date(2009, 1, 1)
b = datetime.date(2009, 2, 1)
one_day = datetime.timedelta(1)

day = a

while day <= b:
    print "Running query for \"" + str(day) + "\""

    sql="""SELECT
    d.Date,  
    SUM(d.Revenue)
    FROM Table d  
    WHERE d.Date = '%s'  
    AND d.Id = %s  
    GROUP BY d.Date  
    """ % (str(day), str(2840))

    os.system('mysql -h -sN -u  -p -e "%s" > FileName-%s.txt db' % (sql, str(day)))
    day += one_day

Многострочные строковые значения создаются в Python парными тройками двойных кавычек и не вкладываются в обычные двойные кавычки.

1 голос
/ 05 августа 2009

Открыть и закрыть строку тремя кавычками

sql = """
      SELECT d.Date, SUM(d.Revenue),
      FROM Table d WHERE d.Date = '%s' AND d.Id = %s 
      GROUP BY d.Date
      """ % (str(day), str(2840))

Вы также можете разбить строку в середине строки с помощью символа \.

#!/usr/bin/python

import datetime
import sys, os, time, string

a = datetime.date(2009, 1, 1)
b = datetime.date(2009, 2, 1)
one_day = datetime.timedelta(1)

day = a

while day <= b:

 print "Running query for \"" + str(day) + "\""

 sql="SELECT d.Date, SUM(d.Revenue), FROM Table d WHERE d.Date = '%s' \
      AND d.Id = %s GROUP BY d.Date " % (str(day), str(2840))

 os.system('mysql -h -sN -u  -p -e %s > FileName-%s.txt db' % (sql, str(day)))
0 голосов
/ 05 августа 2009

Для этого вы используете тройные кавычки.

s = """
Python is awesome.
Python is cool.
I use Python.
And so should you.
"""

print s

Python is awesome.
Python is cool.
I use Python.
And so should you.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...