websites2014
というデータベースと、Postgresqlを使用してこのデータベースの下に3つのテーブルcand_elec
、sites
、pages
というデータベースを作成しました。私は今テーブルpages
を照会しようとしており、その列の1つであるuuid
でフィルタリングしていますが、動作しません。以下のコードである:それは動作しませんSQLAlchemyクエリ/フィルタが機能しない
test = pages.filter_by(uuid="1234").first()
私は、コードを変更した場合:次の行までの作業罰金以上
import sqlalchemy
from sqlalchemy import create_engine
from sqlalchemy import Column, String
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
from sqlalchemy import inspect
db_string = "postgres://usr:[email protected]:5432/websites2014"
db = create_engine(db_string)
Session = sessionmaker(db)
session = Session()
pages = session.query('pages')
コードが
test = pages.filter_by("uuid"="1234").first()
私はPostgresqlとSQLAlchemyの新機能です。誰も助けることができますか?ありがとう!
EDIT以下は1
は私が改訂された新しいコードは次のとおりです。
import sqlalchemy
from sqlalchemy import create_engine
from sqlalchemy import Column, String
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
from sqlalchemy import inspect
db_string = "postgres://usr:[email protected]:5432/websites2014"
db = create_engine(db_string)
Session = sessionmaker(db)
session = Session()
Base = declarative_base()
class Page(Base):
__tablename__ = 'polls_question'
uuid = Column(String, primary_key=True)
pages = session.query(Page)
test = pages.filter_by(uuid=1234).first()
しかし、それは私のようにエラーメッセージを表示します。InternalError: (psycopg2.InternalError) current transaction is aborted, commands ignored until end of transaction block [SQL: 'SELECT polls_question.uuid AS polls_question_uuid \nFROM polls_question \nWHERE polls_question.uuid = %(uuid_1)s \n LIMIT %(param_1)s'] [parameters: {'uuid_1': 1234, 'param_1': 1}]
私は最後の行を変更した場合:session.execute("""SELECT * from page WHERE uuid = '1234'""").first()
別のエラーメッセージが表示されます。InternalError: (psycopg2.InternalError) current transaction is aborted, commands ignored until end of transaction block [SQL: "SELECT * from page WHERE uuid = '1234'"]
もう一度お世話になります!答えは以下のコメントとして
EDIT 2
私のようにコードを書き換えた場合、:
class Pages(Base):
__tablename__ = 'pages'
uuid = Column(String, primary_key=True)
作成するときに、私が定義されているので、クラスの名前とテーブル名が定義されています表。それは動作し、エラーメッセージが消えます。
ありがとうございました!しかし、私はまだ少し混乱しています。あなたのコードによると、私は既にテーブルとその中の列を作成していても、私はまだこれらの2つを自分のコードで再び定義しなければならないようです。 Btw、最後の行 'test = pages.filter_by(uuid =" 1234 ")。first()'はまだ動作せず、元の投稿にエラーメッセージを入れます。 – tzu
@Tzu tablenameを残念に思いますが、それはもちろん__tablename__ = 'page''です – PRMoureu
あなたのデータベースの 'uuid'のタイプをチェックできますか?整数か文字列ですか? – PRMoureu