📜  SQLAlchemy 中的单列查询结果

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

SQLAlchemy 中的单列查询结果

在这篇文章中,我们将深入研究使用 SQLAlchemy 运行单列查询时获得的结果。

SQLAlchemy 是一个很棒且易于使用的Python模块,用于将Python和 SQL 数据库连接在一起,从而增加任何程序员的能力。要安装 SQLAlchemy,请在终端中运行以下命令:

pip install sqlalchemy pymysql

注意: pymysql 是我们需要为这篇文章安装的 SQLAlchemy 的依赖项。

因此,当我们使用 SQLAlchemy 运行单列查询时,我们会得到一个结果。结果对象将包含该单列查询的值的元组。这就是基本功能的工作方式。

让我们运行一些查询并查看上面的内容

使用的数据库:

示例 1:

让我们使用 SQLAlchemy 获取所有名称并查看获得的结果。 SQL 查询将如下所示:

SELECT name FROM student;
Python3
from sqlalchemy import create_engine
  
user, password, host, database = 'root', '123', 'localhost', 'geeksforgeeks'
engine = create_engine(
    url=f'mysql+pymysql://{user}:{password}@{host}/{database}?charset=utf8')
  
connection = engine.connect()
  
table_name = 'student'
  
query = f'SELECT name FROM {table_name} ;'
result = connection.execute(query)
  
for e in result:
    print(e)


Python3
from sqlalchemy import create_engine
  
user, password, host, database = 'root', '123', 'localhost', 'geeksforgeeks'
engine = create_engine(
    url=f'mysql+pymysql://{user}:{password}@{host}/{database}?charset=utf8')
  
connection = engine.connect()
  
table_name = 'student'
  
query = f'SELECT section FROM {table_name} WHERE sno IN (1,2,6) ;'
result = connection.execute(query)
  
for e in result:
    print(e)


Python3
values = []
for e in result:
    values.append(e[0])


Python3
values = [ e[0] for e in result ]


Python3
from sqlalchemy import create_engine
  
user, password, host, database = 'root', '123', 'localhost', 'geeksforgeeks'
engine = create_engine(
    url=f'mysql+pymysql://{user}:{password}@{host}/{database}?charset=utf8')
  
connection = engine.connect()
  
table_name = 'student'
  
query = f'SELECT name FROM {table_name};'
result = connection.execute(query)
  
values = []
for e in result:
    values.append(e[0])
  
print(values)


输出

示例 2:

让我们从学生表中获取 sno 为 1 或 2 或 6 的所有学生部分。

SQL 查询将如下所示:

SELECT section FROM student WHERE sno IN (1,2,6);

Python3

from sqlalchemy import create_engine
  
user, password, host, database = 'root', '123', 'localhost', 'geeksforgeeks'
engine = create_engine(
    url=f'mysql+pymysql://{user}:{password}@{host}/{database}?charset=utf8')
  
connection = engine.connect()
  
table_name = 'student'
  
query = f'SELECT section FROM {table_name} WHERE sno IN (1,2,6) ;'
result = connection.execute(query)
  
for e in result:
    print(e)

输出

因此,正如您在上述两个示例中所看到的,单列查询返回的结果包含元组,其元素是从查询中获取的值。

获取包含结果直接值的列表代替元组

现在,您可能需要直接获取值,而不是存储在元组中并获取这些元组。

如您所见,每个元组的第一个元素是我们的值。因此,您可以在结果对象上运行 for 循环,并且在每次迭代中,您将获得元组。您可以将该元组的第一个元素附加到您的自定义列表中并轻松获取这些值。让我们看看上面的代码:

Python3

values = []
for e in result:
    values.append(e[0])

值列表将直接包含所有获取的值。您可以减少编号。上面使用列表理解使用的行数。代码是:

Python3

values = [ e[0] for e in result ]

例子 :

Python3

from sqlalchemy import create_engine
  
user, password, host, database = 'root', '123', 'localhost', 'geeksforgeeks'
engine = create_engine(
    url=f'mysql+pymysql://{user}:{password}@{host}/{database}?charset=utf8')
  
connection = engine.connect()
  
table_name = 'student'
  
query = f'SELECT name FROM {table_name};'
result = connection.execute(query)
  
values = []
for e in result:
    values.append(e[0])
  
print(values)

输出