今天,尝试用python向mysql数据库中写入数据,没想到被一个日期的格式问题给拦住了去路,最后请教了个专业大佬才解决。
上代码
1.先写连接mysql的代码
def conn_db():
db = pymysql.connect(host='localhost', user='root', password='Pwd#123456',
database='baidu')
return db
2. 写具体操作的代码
def insert_oper(sql):
db = conn_db()
cursor = db.cursor()
try:
cursor.execute(sql)
db.commit()
except:
db.rollback()
finally:
db.close()
user = User # 这个是产生数据的类
sql = "insert into user values('%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', %d);"\
%(user.get_userId(), user.get_loginName(), user.get_password(), user.get_cell(),
user.get_mail(), user.get_jianame(), user.get_createtime(), user.get_updatetime(),
user.get_datebirth(), user.get_age())
insert_oper(sql)
这里出问题的地方就是这个sql语句,我犯的错误是 我认为数据库里用的是datetime类型的数据,所以在sql语句中传数据的部分只用了%s,因为认为datetime日期时间类型不是字符串,结果怎么运行代码,数据库就是写入不了数据。
但是,我使用明值的语句去传输数据,结果是可以写入数据的。
折腾了半天,一直没找出原因。后来,从发消息给我的专栏作者中找了一个大佬,加了他的微信,他通过了,然后付费问了大佬,才知道是格式化没做对,就是日期类型的数据也应该加上单引号,我照做了,结果就写入成功了。
这里日期类型datetime的数据也加上单引号''。写入数据就成功了。
这里说明,数据类型传的不对,也影响对数据库的操作。这里写入操作,就直接罢工了。
另外,写sql语句时,内容太长,python是用\来连接两行数据,和java用+不一样,别用混了。