Найти - Пользователи
Полная версия: Импорт из БД - разбиение Select на строки
Начало » Python для новичков » Импорт из БД - разбиение Select на строки
1
polinaruru
Привет всем. Нужна помощь по синтаксису.

Вытаскиваю данные из БД (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 =
В данном случае селект выступает строкой?
py.user.next
Используй тройные кавычки, либо каждую строку в кавычки бери.

  
>>> s1 = """
... a
... b
... c
... """
>>> 
>>> s2 = ('a'
...       'b'
...       'c')
>>> 
>>> s1
'\na\nb\nc\n'
>>> 
>>> s2
'abc'
>>>
polinaruru
Спасибо, добрый человек.

Но вот второй вариант не подходит.
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)

А за первый спасибо огромное - без проблем отработал. Я почему-то старалась скобками проблему решить.
py.user.next
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'
>>>
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB