SQLAlchemy选择语句 - SQL语法错误

2 投票
2 回答
1661 浏览
提问于 2025-04-16 04:03

我创建了一个表(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)

在结果 = 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 个回答

0

你的feeds.select()调用可能缺少了一些东西,我建议你再看看这个函数的API文档。

1

我怀疑 Table.select() 这个方法只是用来选择特定的列。如果你想用 SELECT * 来选择所有列的话,表达式语言教程 提供了另一种写法:

from sqlalchemy.sql import select
s = select([feeds])
result = db.execute(s)

撰写回答