Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 12, 2016 15:17:28

polinaruru
Зарегистрирован: 2016-03-23
Сообщения: 12
Репутация: +  0  -
Профиль   Отправить e-mail  

Импорт из БД - разбиение Select на строки

Привет всем. Нужна помощь по синтаксису.

Вытаскиваю данные из БД (firebird). Селект получается длинным. Использует join'ы, функции firebierd и т.д.

Строка нечитаема. Лишние данные импортировать не хочу.
Пытаюсь селект разбить на строки. Но что-то я делаю не так. Подскажите, плиз.

 import pandas as pd
import fdb
FBCon =fdb.connect( dsn='localhost:DATA', user='user',password='pass',charset='WIN1251')
cur = FBCon.cursor()
SELECT = ("select o.PID, o.Orderid, o.eventname, datetime_utc_to_localtimestring( o.event_dt_utc),      datetime_utc_to_localtimestring(o.registration_dt_utc)
          from Orders o
          join
          (
          select first 3 distinct (PID) max3PID
          from Orders
          order by PID desc
          ) lastPID
          on o.PID = lastPID.max3PID
          order by  o.PID, o.ID")
          
cur.execute(SELECT)
columns=pd.DataFrame(list(cur.description))[0]
df = pd.DataFrame(cur.fetchall(),columns=columns) 
print(df.ID )

Упорно считывается только первая строка после Select =
В данном случае селект выступает строкой?

Офлайн

#2 Авг. 13, 2016 04:20:09

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10016
Репутация: +  857  -
Профиль   Отправить e-mail  

Импорт из БД - разбиение Select на строки

Используй тройные кавычки, либо каждую строку в кавычки бери.

  
>>> s1 = """
... a
... b
... c
... """
>>> 
>>> s2 = ('a'
...       'b'
...       'c')
>>> 
>>> s1
'\na\nb\nc\n'
>>> 
>>> s2
'abc'
>>>



Отредактировано py.user.next (Авг. 13, 2016 04:20:37)

Офлайн

#3 Авг. 15, 2016 10:44:44

polinaruru
Зарегистрирован: 2016-03-23
Сообщения: 12
Репутация: +  0  -
Профиль   Отправить e-mail  

Импорт из БД - разбиение Select на строки

Спасибо, добрый человек.

Но вот второй вариант не подходит.
fdb.fbcore.DatabaseError: ('Error while preparing SQL statement:\n- SQLCODE: -104\n- Dynamic SQL Error\n- SQL error code = -104\n- Token unknown - line 1, column 220\n- (', -104, 335544569)

А за первый спасибо огромное - без проблем отработал. Я почему-то старалась скобками проблему решить.

Офлайн

#4 Авг. 15, 2016 14:39:16

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10016
Репутация: +  857  -
Профиль   Отправить e-mail  

Импорт из БД - разбиение Select на строки

polinaruru
Но вот второй вариант не подходит.
Нужно помнить, что там прямая склейка, без переносов.
Нужно специально вставлять их
  
>>> s = ('a\n'
...      'b\n'
...      'c\n')
>>> 
>>> s
'a\nb\nc\n'
>>> 
>>> s = ('a'
...      '\n'
...      'b'
...      '\n'
...      'c'
...      '\n')
>>> 
>>> s
'a\nb\nc\n'
>>>



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version