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