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);" %temp

 

另外一种方法更加简单: 就是在execute语句中把变量全部用(?) 表示,这样就不用每一个变量都使用“”  来添加。 

可以参照原问题。 

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

posted @ 2016-07-18 08:35  万一免五开户指南  阅读(198)  评论(0)    收藏  举报