python脚本中的SQL未返回所有值

python脚本中的SQL未返回所有值,python,sql,sqlite,Python,Sql,Sqlite,我试图在sql中使用python运行execute语句,以返回与一个值匹配的所有ID,在本例中为x。有多个项目应该与我试图通过的变量(x)相匹配,但当我运行此行时,列表中只有一个项目,其余的项目被甩在后面。当我在sqlite浏览器中执行该行时,它会给我一个表,其中包含我想要的所有匹配数据,但由于某些原因,这不会将所有数据都传递到列表中 cur.execute('SELECT movie_id FROM MG WHERE genre_id = ?', (x, )) for x in cur

我试图在sql中使用python运行execute语句,以返回与一个值匹配的所有ID,在本例中为x。有多个项目应该与我试图通过的变量(x)相匹配,但当我运行此行时,列表中只有一个项目,其余的项目被甩在后面。当我在sqlite浏览器中执行该行时,它会给我一个表,其中包含我想要的所有匹配数据,但由于某些原因,这不会将所有数据都传递到列表中

cur.execute('SELECT movie_id FROM MG WHERE genre_id = ?', (x, ))
    for x in cur:
        midg.append(y[0]) 
以下是我到目前为止的全部代码:

    gnames = list()
cur.execute('SELECT genre_name FROM Genre')
for row in cur:
    gnames.append(row[0])
print(gnames)
gid = list()
midg = list()
grating = list()
grate = dict()
for namew in gnames:
    gid.clear()
    grating.clear()
    midg.clear()
    cur.execute('SELECT genre_id FROM Genre WHERE genre_name = ?', (namew, ))
    x = cur.fetchone()[0]
    cur.execute('SELECT movie_id FROM MG WHERE genre_id = ?', (x, ))
    for x in cur:
        midg.append(y[0])
        for z in midg:
            cur.execute('SELECT movie_rating FROM Movie WHERE movie_id = ?', (z, ))
            for row in cur:
                grating.append(row[0])
                gaverage = sum(grating)/len(grating)
                grate[namew] = gaverage
试试看

#Install package
#pip install pyodbc
import pyodbc

server = 'server'
database = 'database'
username = 'username'
password = 'password'
cnxn = pyodbc.connect('DRIVER={ODBC Driver 17 for SQL Server};SERVER='+server+';DATABASE='+database+';UID='+username+';PWD='+ password)
cursor = cnxn.cursor()

cursor.execute("SELECT * from INFORMATION_SCHEMA.TABLES")

row = cursor.fetchone()
while row:

    #TABLE_CATALOG
    print(row[0])

    print()

    #TABLE_SCHEMA
    print(row[1])

    print()

    #TABLE_NAME
    print(row[2])

    print()

    # TABLE_TYPE
    print(row[3])

    print()

    print('all columns')
    print(str(row[0]), "-",str(row[1]), "-",str(row[2]), "-",str(row[3]))

    row = cursor.fetchone()

旁注:您可能想看看SQL
JOIN
操作系列。