簡體   English   中英

如何查詢表的所有行

[英]How to query all rows of a table

我正在將 Python Sqlalchemy 用於 MYSQL 數據庫。 我編寫了以下腳本來創建類對象,然后在表中添加了一些行。

from sqlalchemy import create_engine, MetaData, Table, Column, ForeignKey
from sqlalchemy.dialects.mysql.base import VARCHAR, LONGTEXT, INTEGER
from sqlalchemy.orm import sessionmaker
from sqlalchemy.ext.declarative import declarative_base

engine = create_engine("mysql+mysqldb://root:@localhost/mydb")
connection = engine.connect()

Session = sessionmaker(bind=engine)
session = Session()
Base = declarative_base()
metadata = MetaData()

class User(Base):
    __tablename__ = 'User'
    id = Column('id', INTEGER(display_width=11), primary_key=True, nullable=False)
    email = Column('email', VARCHAR(charset='utf8mb4', collation='utf8mb4_0900_ai_ci', length=100), unique=True)
    password = Column('password', VARCHAR(charset='utf8mb4', collation='utf8mb4_0900_ai_ci', length=45))
    name = Column('name', VARCHAR(charset='utf8mb4', collation='utf8mb4_0900_ai_ci', length=100))

現在,我需要從“用戶”表中獲取所有行,所以我這樣做:

user = session.query(User).all()
print(user)

但我得到的輸出不是表格數據而是這個:

[<__main__.User object at 0x7f10b0c6ebe0>, <__main__.User object at 0x7f10b0c6ec50>]

我如何從表中獲取實際數據? 任何幫助,將不勝感激

您將獲得的輸出是一個記錄元組。 所以,使用循環

   users = session.query(User).all()
   for user in users:
        print (user)
        print (user.id, user.email, user.password, user.name)

您應該在 User 類中編寫 __str__ 方法,例如:

class User(Base):
    ...

    def __str__(self):
        str_out = 'id={} email={} password={} name={}'
        str_formated = str_out.format(self.id,self.email,self.password,self.name)
        return str_formated

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM