Оператор выбора SQLAlchemy - ошибка синтаксиса SQL - PullRequest
2 голосов
/ 13 сентября 2010

Я создал таблицу (MySQL 5.1)

from sqlalchemy import *

def get():
    db = create_engine('mysql://user:password@localhost/database')
    db.echo = True
    metadata = MetaData(db)

    feeds = Table('feeds', metadata,
            Column('id', Integer, primary_key=True),
            Column('title', String(100)),
            Column('link', String(255)),
            Column('description', String(255)),
    )

    entries = Table('entries', metadata,
            Column('id', Integer, primary_key=True),
            Column('fid', Integer),
            Column('url', String(255)),
            Column('title', String(255)),
            Column('content', String(5000)),
            Column('date', DateTime),
    )
    feeds.create()
    entries.create()

Но когда я пытаюсь сделать запрос:

from sqlalchemy import *
db = create_engine('mysql://user:password@localhost/database')
metadata = MetaData(db)
feeds = Table('feeds', metadata)
s = feeds.select()
result = db.execute(s)

Я получаю ошибку в строке result = db.execute (s), указывающей следующее:

sqlalchemy.exc.ProgrammingError: (ProgrammingError) (1064, "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FROM feeds' at line 2") 'SELECT  \nFROM feeds' ()

Я, очевидно, новичок в SQLAlchemy, и я понятия не имею, что я делаю неправильно, несмотря на то, что гуглил каждый учебник в Интернете и менял это миллион раз. Любая помощь?

Ответы [ 2 ]

1 голос
/ 13 сентября 2010

Я подозреваю, Table.select() только для выбора определенных столбцов. Для SELECT * в учебнике по языку выражений используется следующий синтаксис:

from sqlalchemy.sql import select
s = select([feeds])
result = db.execute(s)
0 голосов
/ 13 сентября 2010

возможно, что-то отсутствует в вашем вызове feeds.select (), я бы еще раз взглянул на документацию API для этой функции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...