def insert():
conn = sqlite3.connect("sqlite.db")
print "open database passed"
table_create = '''
CREATE TABLE COMPANY
(ID INT PRIMARY KEY,
NAME TEXT,
AGE INT,
ADDRESS CHAR(50),
SALARY REAL
);
'''
conn.execute(table_create)
上面定义了一个表。
temp="2017-12-12"
paul="INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) VALUES(1,%s,32,'CALIFORNIA',2000.00);" %temp #这里用python的变量替换
conn.execute(paul)
conn.commit()
conn.close()
生成了一个数据库后,查看里面的数据,发现 ID=1 下的name值是1993。 开始的时候觉得很奇怪。 记过不断替换,后面调试才发现了问题。
尝试直接打印paul语句:
print paul
输出的是:
INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) VALUES(1,2017-12-12,32,'CALIFORNIA',2000.00);
看到了吗?
2017-12-12 这样看来就知道问题了,原来语句中如果是字符的话,应该要加入“”。 问题出在这里。 所以 在变量替换语句中 添加一个 “”就 把问题解决了。
paul="INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) VALUES(1,\"%s\",32,'CALIFORNIA',2000.00);" %myname
另外一种方法更加简单: 就是在execute语句中把变量全部用(?) 表示,这样就不用每一个变量都使用“” 来添加。