在Python中的另一个SQL查询中使用一个SQL查询的输出

在Python中的另一个SQL查询中使用一个SQL查询的输出,python,sql-server,jupyter-notebook,Python,Sql Server,Jupyter Notebook,我正在使用Python上的SQL数据库。建立连接后,我想在另一个查询中使用一个查询的输出 示例:query1为我提供了架构中所有表的列表。我想在query2中使用query1中的每个表名 query2 = "SELECT TOP 200 * FROM db.schema.table ORDER BY ID" 我想对query1输出中的每个表使用此查询。 有人能帮我编写Python代码吗?这里是一个关于如何做您想做的事情的工作示例。我没有在schemes中查找tablelist,但是您可以简单地

我正在使用Python上的SQL数据库。建立连接后,我想在另一个查询中使用一个查询的输出

示例:query1为我提供了架构中所有表的列表。我想在query2中使用query1中的每个表名

query2 = "SELECT TOP 200 * FROM db.schema.table ORDER BY ID"
我想对query1输出中的每个表使用此查询。
有人能帮我编写Python代码吗?

这里是一个关于如何做您想做的事情的工作示例。我没有在schemes中查找tablelist,但是您可以简单地替换SQL代码来执行此操作。我只是通过联合两个表的语句来“伪造”。关于SQL代码还有很多其他答案,我不想把这个答案弄得乱七八糟:

看起来您可能缺少的关键部分是构建第二条SQL语句的
join
步骤。这应该是一个足够的出发点,以制定准确的你正在寻找什么

import pypyodbc

def main():
    table_list = get_table_list()
    for table in table_list:
        print_table(table)

def print_table(table):
    thesql = " ".join(["SELECT TOP 10 businessentityid FROM", table])
    connection = get_connection()
    cursor = connection.cursor()
    cursor.execute(thesql)
    for row in cursor:
        print (row["businessentityid"])
    cursor.close()
    connection.close()

def get_table_list():
    table_list = []
    thesql = ("""
    SELECT 'Sales.SalesPerson' AS thetable
    UNION
    SELECT 'Person.BusinessEntity' thetable
    """)
    connection = get_connection()
    cursor = connection.cursor()
    cursor.execute(thesql)
    for row in cursor:
        table_list.append(row["thetable"])
    cursor.close()
    connection.close()
    return table_list


def get_connection():
    '''setup connection depending on which db we are going to write to in which environment'''
    connection = pypyodbc.connect(
        "Driver={SQL Server};"
        "Server=YOURSERVER;"
        "Database=AdventureWorks2014;"
        "Trusted_Connection=yes"
        )
    return connection

main ()

这给了我一个错误,行索引必须是整数,而不是str。对于这段代码:对于游标中的行:table_list.append(row[“thetable”]),我使用的是Python 3.6,但这不重要。试着打印出
行[“thetable”]
并查看它的内容。代码应该按原样工作。嘿!根据我的数据库进行了一些修改。我还有一个问题。我用于对每个表进行排序的ID对于所有表都是不同的。那么,有什么方法可以使用主键对所有表进行排序,甚至使用Python上的查询对第一列进行排序呢?是的,您需要将结果填充到字典中,并且可以对键和值进行排序。也许是一份字典清单……)如果你在这里搜索,有很多关于做不同排序的建议。如果你觉得我的答案有帮助,请接受:)这样的事情可以做到吗?def column(table,i):返回[row[0]for row in table]col=column(table,1)query=“从db.schema中选择TOP 10*。[{}]按[{}]排序。格式(table,col)