タグ付けされた質問 「sqlalchemy」

SQLAlchemyは、アプリケーション開発者にSQLの完全な機能と柔軟性を提供するPython SQLツールキットおよびオブジェクトリレーショナルマッパーです。

3
n個の結果のみを返すSQLAlchemyクエリ?
私はSQLAlchemyのドキュメントをグーグルで読んでいますが、探しているものが見つかりません。 クエリによって返される結果の数を特定の数に制限するSQLAlchemyの関数を探しています。例:5?first()またはのようなものall()。
90 sqlalchemy 

2
SQLAlchemyによってデータベースに送信されたSQLコマンドのデバッグ(表示)
PersonというORMクラスがあります。これはpersonテーブルをラップします。 データベースなどへの接続を設定した後、次のステートメントを実行します。 people = session.query(Person).all() personテーブルには(まだ)データが含まれていないため、変数peopleを出力すると、空のリストが表示されます。 ORMクラスPeopleで参照されているテーブルの名前をpeople_foo(存在しない)に変更しました。 その後、スクリプトを再度実行します。存在しないテーブルにアクセスしようとしても例外がスローされなかったことに驚きました。 したがって、次の2つの質問があります。 データベースエラーをスクリプトに伝播するようにSQLAlchemyを設定するにはどうすればよいですか? データベースエンジンに送信されているSQLを表示(つまり印刷)するにはどうすればよいですか? それが役に立ったら、私はPostgreSQLを使用しています。 [編集] 私はパッケージを書いています。私の__main__.pyスクリプトには、次のコードがあります(ここでは短縮されています)。 ### __main__.py import common # imports logging and defines logging setup funcs etc logger = logging.getLogger(__name__) def main(): parser = OptionParser(usage="%prog [options] <commands>", version="%prog 1.0") commands = OptionGroup(parser, "commands") parser.add_option( "-l", "--logfile", dest="logfile", metavar="FILE", help="log to …

5
SQL「LIKE」ステートメントと同等のSQLAlchemy
タグ列には、「アップルバナナオレンジ」や「ストロベリーバナナレモン」などの値があります。SQLAlchemyと同等のステートメントを見つけたい SELECT * FROM table WHERE tags LIKE "%banana%"; これを行うには何を渡す必要Class.query.filter()がありますか?



1
declarative_base()とdb.Modelの違いは何ですか?
Flask-SQLAlchemyプラグインのクイックスタートチュートリアルでは、db.Modelクラスを継承するテーブルモデルを作成するようにユーザーに指示しています。 app = Flask(__main__) db = SQLAlchemy(app) class Users(db.Model): __tablename__ = 'users' ... ただし、SQLAlchemyチュートリアルとbottle-SQLAlchemy READMEはどちらも、テーブルモデルがBaseからインスタンス化されたものを継承することを示唆していますdeclarative_base()。 Base = declarative_base() class Users(Base): __tablename__ = 'users' ... これら2つのアプローチの違いは何ですか?

1
いつsqlalchemyback_populatesを使用する必要がありますか?
このガイドに従ってSQLAlchemyリレーションの例を試すと:基本的なリレーションシップパターン 私はこのコードを持っています #!/usr/bin/env python # encoding: utf-8 from sqlalchemy import create_engine from sqlalchemy import Table, Column, Integer, ForeignKey from sqlalchemy.orm import relationship, sessionmaker from sqlalchemy.ext.declarative import declarative_base engine = create_engine('sqlite:///:memory:', echo=True) Session = sessionmaker(bind=engine) session = Session() Base = declarative_base(bind=engine) class Parent(Base): __tablename__ = 'parent' id = Column(Integer, primary_key=True) children …

4
ファイル全体のSQLAlchemyクラス
SQLAlchemyクラスを複数のファイルに分散させる方法を理解しようとしていますが、その方法を理解することはできません。私はSQLAlchemyにかなり慣れていないので、この質問が些細なものである場合はご容赦ください。 それぞれ独自のファイルでこれらの3つのクラスを検討してください。 A.py: from sqlalchemy import * from main import Base class A(Base): __tablename__ = "A" id = Column(Integer, primary_key=True) Bs = relationship("B", backref="A.id") Cs = relationship("C", backref="A.id") B.py: from sqlalchemy import * from main import Base class B(Base): __tablename__ = "B" id = Column(Integer, primary_key=True) A_id = Column(Integer, ForeignKey("A.id")) …

4
sqlalchemyは複数の列をフィルタリングします
2つの列を組み合わせてフィルターを適用するにはどうすればよいですか?たとえば、「名」列と「姓」列の両方を同時に検索したいとします。1つの列のみを検索する場合の方法は次のとおりです。 query = meta.Session.query(User).filter(User.firstname.like(searchVar))

3
Gunicornで実行されているFlask-SQLAlchemyアプリのDB pool_sizeの選択
Gunicornで実行中のFlask-SQLAlchmeyアプリをPostgreSQLデータベースに接続していて、そのpool_size値が何であるか、また予想されるデータベース接続の数を見つけるのに苦労しています。 これは、物事がどのように機能するかについての私の理解です: Python 3.7のプロセスはメモリを共有しない 各Gunicornワーカーは独自のプロセスです したがって、各Gunicornワーカーは、データベース接続プールの独自のコピーを取得し、他のワーカーと共有されません。 Pythonのスレッドはメモリを共有します したがって、Gunicornワーカー内のすべてのスレッドは、データベース接続プールを共有します これまでのところ正しいですか?それが正しい場合、Gunicornで実行されている同期Flaskアプリの場合: データベース接続の最大数=(ワーカー数)*(ワーカーあたりのスレッド数)? そして、ワーカー内で、ワーカーよりもプールからの接続を多く使用しますか? pool_sizeスレッド数よりも大きくする必要がある理由はありますか?だから、で起動したgunicornアプリの場合は2 でgunicorn --workers=5 --threads=2 main:appなければpool_sizeなりませんか?また、ワーカーを使用し、スレッドを使用していないpool_size場合、1より大きい値を使用する理由はありますか?

2
db initの実行中にレコードをテーブルに追加する
私のアプリケーションでは、フラスコ、sqlalchemy、sqlite、およびpythonを使用しています。データベースを作成するためにdb initを実行するとき、デフォルトの値のセットをデータベースに追加する必要があります。レコードをテーブルに追加するためにこれら2つのことを試しました。1つの方法は「イベント」を使用することです。 from sqlalchemy.event import listen from sqlalchemy import event, DDL @event.listens_for(studentStatus.__table__, 'after_create') def insert_initial_values(*args, **kwargs): db.session.add(studentStatus(status_name='Waiting on admission')) db.session.add(studentStatus(status_name='Waiting on student')) db.session.add(studentStatus(status_name='Interaction Initiated')) db.session.commit() 私が走るとき python manage_db.py db init, python manage_db.py db migrate, python manage_db.py db upgrade 問題はありませんでしたが、レコードが作成されていません。 私が試した別の方法は、私が含めたmodels.pyです record_for_student_status = studentStatus(status_name="Waiting on student") db.session.add(record_for_student_status) db.session.commit() print(record_for_student_status) クラスモデルコード: class …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.