奇怪的错误,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奇怪的错误,mysql插入到数据库的数据读出来不对,问题在哪儿?


回答:

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

回到顶部