我收到以下错误,当我尝试插入值到SQLite数据库ValueError异常:无效的字面INT()基数为10: 'SOH'
Traceback (most recent call last):
File "C:\SS\Problem13\src\database.py", line 23, in <module>
sql = """INSERT INTO students (name, student_id, email, school_id, gender, gpa, address) VALUES ('%s','%i','%s','%i','%s','%f','%s')"""%(data[0], int(data[1]),data[2],int(data[3]),data[4],float(data[5]),data[6])
ValueError: invalid literal for int() with base 10: 'SOH'
下面是我的代码:
import sqlite3
import csv
# Connect to database, if it does not exist, it will create it.
conn = sqlite3.connect("nopoly.db")
# Creating table.
conn.execute("PRAGMA foreign_keys = 1")
conn.execute("CREATE TABLE schools (id INTEGER PRIMARY KEY, name TEXT NOT NULL, description TEXT NOT NULL, director TEXT NOT NULL, email TEXT NOT NULL)")
conn.execute("CREATE TABLE students (id INTEGER PRIMARY KEY, name TEXT NOT NULL, student_id INTEGER NOT NULL, email TEXT NOT NULL, school_id INTEGER NOT NULL REFERENCES schools, gender TEXT NOT NULL, gpa FLOAT NOT NULL, address TEXT NOT NULL)")
# Opening the csv files
schoolreader = csv.reader(open("files/schools.csv"))
studentreader = csv.reader(open("files/studentsp13.csv"))
# Skip the headers
schoolreader.next()
studentreader.next()
# Extract each row and print
for data in schoolreader:
print data
sql = """INSERT INTO schools (name, description, director, email) VALUES ('%s','%s','%s','%s')"""%(data[0],data[1],data[2],data[3])
print "DEBUG", sql
conn.execute(sql)
for data in studentreader:
print data
sql = """INSERT INTO students (name, student_id, email, school_id, gender, gpa, address) VALUES ('%s','%i','%s','%i','%s','%f','%s')"""%(data[0], int(data[1]),data[2],int(data[3]),data[4],float(data[5]),data[6])
print "DEBUG", sql
conn.execute(sql)
#
conn.commit()
我明白在studentsp13.csv中,学校被标记为字符串。我想知道如何将它映射成整数,使其与“学校”表相对应。
回溯(最近通话最后一个): 文件 “C:\ SS \ Problem13的\ src \ database.py” 22行,在 学校[数据[0] ] = conn.lastrowid AttributeError:'sqlite3.Connection'对象没有属性'lastrowid' –
2011-01-21 06:29:49