奇怪的错误,mysql插入到数据库的数据读出来不对,问题在哪儿?
奇怪的错误,插入到数据库的数据读出来不对,问题在哪儿?
小白一枚,请高手指教;
def get_last_date(conn):
ret=''try:
cursor = conn.cursor()
query = '''select date from lastdate limit 1;'''
cursor.execute(query)
conn.commit()
count_wm = cursor.fetchall()
ret= count_wm[0][0]
print(count_wm,ret)
except Exception as e:
print(e)
'''
try:
# 查询语句,选出employee表中的所有数据
sql = 'select * from lastdate limit 1;'
# read_sql_query的两个参数: sql语句, 数据库连接
df = pd.read_sql_query(sql, engine)
# 输出employee表的查询结果
ret=df['lastdate'].values[0]
except Exception as e:
print(e)
'''
return ret
def set_last_date(conn):
cursor = conn.cursor()cursor.execute("DROP TABLE IF EXISTS lastdate")####
sql = 'create table if not exists lastdate(date varchar(12) not null,temp int,primary key(`date`))'
cursor.execute(sql)
conn.commit()
dt=datetime.datetime.now().date().strftime("%Y-%m-%d")
sql = '''insert into lastdate (date,temp) values({},0);'''.format(dt)
print(sql)
print('hhh')
try:
cursor.execute(sql)
conn.commit()
except Exception as e:
print(e)
conn.rollback()
print('插入失败')
#finally:
# 关闭连接
#conn.close()
set_last_date(conn)
lastdt=get_last_date(conn)
print(type(lastdt),lastdt)#str
显示
insert into lastdate (date,temp) values(2020-09-24,0);
hhh
(('1987',),) 1987
<class 'str'> 1987
回答:
set_last_date
里的date
值要加引号,改成如下:
sql = '''insert into lastdate (date,temp) values('{}',0);'''.format(dt)
date
是varchar类型,但插入没加入引号的2020-09-24
会被转化成'1987'
。
为什么是1987,不是别的值,为什么能插入?尝试执行insert into lastdate (date,temp) values(2020-09-25,0);
结果值变为1986!!变小了,原以为是根据ASCII转换的,仔细一看原来是当成算术进行减法
,最后的值再直接隐式转换成varchar,有点意思。
回答:
谢谢,可以了;mysql 与python语法特性差异好大,看来还得好好学习
另外,可以直接采用mysql Date数据类型吗?尝试半天总是语法错误。
以上是 奇怪的错误,mysql插入到数据库的数据读出来不对,问题在哪儿? 的全部内容, 来源链接: utcz.com/a/157346.html