with open('TrackPrices.csv','rb') as csvfile:
reader = csv.DictReader(csvfile)
column= [row['price'] for row in reader]
conn = sqlite3.connect('iMusic.db')
c= conn.cursor()
c.execute("UPDATE TRACK set UnitPrice = column")
conn.commit()
conn.close()
我的column是一列和UnitPrice 个数类型一样的数据 想整体替换
看起来逻辑有些模糊。
column 是一个列表吗?
还是 track表的UnitPrice 全部 update 成一个值
只有一行呀, 那还读啥CSV呀,print(column) 看看是啥内容
另外 UnitPrice 是什么类型?
#20321119 Yao LIN ssyyl27
from csv import reader
import csv
import sqlite3
def task1_solution():
with open('TrackPrices.csv','r') as csvfile:
reader = csv.DictReader(csvfile)
column= [row['price'] for row in reader]
print(column)
print(type(column))
con = sqlite3.connect('iMusic.db')
c= con.cursor()
c.execute("UPDATE TRACK set UnitPrice={}".format(column))
con.commit()
con.close()
if __name__ == '__main__':
task1_solution()
对于你的需求,比较简单的方法就是读取2列,做一个数据遍历 , 逐个update。
#20321119 Yao LIN ssyyl27
from csv import reader
import csv
import sqlite3
def task1_solution():
with open('TrackPrices.csv','r') as csvfile:
reader = csv.DictReader(csvfile)
data= [[row['trackid'],row['price']] for row in reader]
con = sqlite3.connect('iMusic.db')
c= con.cursor()
for d in data:
sql_str = "UPDATE TRACK set UnitPrice={0} where trackid={1}".format(d[1],d[0])
print(sql_str)
c.execute(sql_str)
con.commit()
con.close()
if __name__ == '__main__':
task1_solution()