📜  如何从 SQLAlchemy 获取列名?

📅  最后修改于: 2022-05-13 01:54:54.203000             🧑  作者: Mango

如何从 SQLAlchemy 获取列名?

在本文中,我们将讨论如何在Python中使用 SQLAlchemy 获取列名。

SQLAlchemy 是一个开源 SQL 工具包和对象关系映射器,用于在 MIT 许可下发布的Python编程语言。它为应用程序提供了 SQL 的全部功能和灵活性。为了继续阅读本文,我们需要在我们的系统中安装 sqlalchemy 和任何数据库。为了理解本文,我们使用了 MySQL 数据库。

使用 pip 安装 sqlalchemy:

pip install sqlalchemy

对于我们的示例,我们已经在 Geeks4Geeks 模式名称下创建了一个 Profile 表,我们将使用它:

我们可以通过不同的方式获取 SQLAlchemy 中的列名。

方法一:使用keys()

在这里,我们将使用 key() 方法来获取获取列名。它返回一个可迭代的视图,该视图产生将由每一行表示的字符串键。

Python
import sqlalchemy as db
from sqlalchemy.ext.declarative import declarative_base
  
Base = declarative_base()
  
# DEFINE THE ENGINE (CONNECTION OBJECT)
engine = db.create_engine(
    "mysql+pymysql://root:password@localhost/Geeks4Geeks")
  
# CREATE THE TABLE MODEL TO USE IT FOR QUERYING
class Profile(Base):
  
    __tablename__ = 'profile'
  
    email = db.Column(db.String(50), primary_key=True)
    name = db.Column(db.String(100))
    contact = db.Column(db.Integer)
  
  
# PREPARING SQLALCHEMY QUERY
with engine.connect() as conn:
    result = conn.execute(
        db.select([Profile.email, Profile.name,
                   Profile.contact]))
  
# VIEW THE COLUMN NAMES
print(result.keys())


Python
import sqlalchemy as db
from sqlalchemy.ext.declarative import declarative_base
  
Base = declarative_base()
  
# DEFINE THE ENGINE (CONNECTIO OBJECT)
engine = db.create_engine(
    "mysql+pymysql://root:password@localhost/Geeks4Geeks")
  
# CREATE THE TABLE MODEL TO USE IT FOR QUERYING
class Profile(Base):
  
    __tablename__ = 'profile'
  
    email = db.Column(db.String(50), primary_key=True)
    name = db.Column(db.String(100))
    contact = db.Column(db.Integer)
  
  
# PREPARING SQLALCHEMY QUERY
with engine.connect() as conn:
    result = conn.execute(
        db.select([Profile.email, Profile.name,
                   Profile.contact]))
  
# VIEW THE COLUMN NAMES
print(result._metadata.keys)


输出:

在上面的示例中,我们使用 SQLAlchemy ORM 创建了一个 Profile 表。

  • 首先,对引擎进行配置,使其可用于执行 SQL 事务。
  • 然后,Profile 表以 ORM 类的形式定义。
  • 使用 sqlalchemy 引擎,我们正在查询 Profile 表以从表中选择列 email、name 和 contact 的所有记录。信息存储在结果变量中。此变量保存从 Profile 表中提取的列名和记录。结果变量的数据类型是 sqlalchemy.engine.Result。
  • 要访问列名,我们可以在结果上使用方法keys() 。它返回列名列表。
  • 因为我们只查询了三列,所以我们也可以在输出中查看相同的列。

方法二:使用表元数据

这将返回表元数据的“键”。

Python

import sqlalchemy as db
from sqlalchemy.ext.declarative import declarative_base
  
Base = declarative_base()
  
# DEFINE THE ENGINE (CONNECTIO OBJECT)
engine = db.create_engine(
    "mysql+pymysql://root:password@localhost/Geeks4Geeks")
  
# CREATE THE TABLE MODEL TO USE IT FOR QUERYING
class Profile(Base):
  
    __tablename__ = 'profile'
  
    email = db.Column(db.String(50), primary_key=True)
    name = db.Column(db.String(100))
    contact = db.Column(db.Integer)
  
  
# PREPARING SQLALCHEMY QUERY
with engine.connect() as conn:
    result = conn.execute(
        db.select([Profile.email, Profile.name,
                   Profile.contact]))
  
# VIEW THE COLUMN NAMES
print(result._metadata.keys)

输出: