python sqlite 插入的数据含有变量,结果不一致

 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语句中把变量全部用(?) 表示,这样就不用每一个变量都使用“”  来添加。

原问题地址:http://www.30daydo.com/question/18

上一篇:gulp - less 在node.js上的安装和使用


下一篇:Oracle高级查询之OVER