Rumah  >  Soal Jawab  >  teks badan

python - Dalam flask-sqlalchemy, bagaimana untuk menukar pernyataan pertanyaan ke SQL mentah dan mencetaknya?

Gunakan sqlalchemy dalam kelalang python untuk mencipta jadual seperti berikut:

class Role(db.Model):
    __tablename__ = 'roles'
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(64), unique=True)
    default = db.Column(db.Boolean, default=False, index=True)
    permissions = db.Column(db.Integer)
    users = db.relationship('User', backref='role', lazy='dynamic')

Hasil pertanyaan semasa adalah seperti berikut:

In [8]: Role.query.filter_by(name='User').first()
Out[8]: <app.models.Role at 0x159211982b0>

Apa yang kami dapat ialah objek set pertanyaan Adakah terdapat sebarang cara untuk mencetak semua kandungan objek ini? Daripada hanya mendapat satu harta objek ini setiap kali seperti berikut? Juga, bagaimana untuk mencetak pernyataan SQL yang sebenarnya dilaksanakan semasa melaksanakan pernyataan ini?

In [7]: Role.query.filter_by(name='User').first().permissions
Out[7]: 7
世界只因有你世界只因有你2685 hari yang lalu1355

membalas semua(3)saya akan balas

  • 为情所困

    为情所困2017-06-12 09:28:42

    Ini lebih kepada operasi sqlalchemy itu sendiri.

    Apa yang saya tahu ialah apabila menggunakan sqlalchemy. Katakan ada pertanyaan seperti berikut:

    
    q = DBSession.query(model.Name).order_by(model.Name.value)
       

    Lakukan terus:

    
    print str(q)
    

    Anda boleh mencetak penyata sql sebenar. Dan anda boleh melakukan output dialek untuk data yang berbeza, seperti berikut:

    from sqlalchemy.dialects import postgresql
    print str(q.statement.compile(dialect=postgresql.dialect()))
    

    Jadi dalam falsk Kerana flask-sqlalchemy itu sendiri hanyalah pakej flask-sqlalchemy本身只是对sqlalchemy. Pendekatan yang sama harus digunakan

    balas
    0
  • phpcn_u1582

    phpcn_u15822017-06-12 09:28:42

    Jika saya ingat betul, hanya gunakan str (model anda) secara terus

    balas
    0
  • 三叔

    三叔2017-06-12 09:28:42

    Cetak pernyataan sql yang dilaksanakan sebenar:
    SQLALCHEMY_ECHO=True

    balas
    0
  • Batalbalas