- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想转换 SQL 表中的日期格式,但我不知道为什么这不起作用:
import mysql.connector
from mysql.connector import errorcode
from dateutil.parser import parse
appname = "dropbox"
# connect to the database
# Add your DB connection information
try:
database = mysql.connector.connect(user='root', password='root',
host='localhost',
database='google_play')
except mysql.connector.Error as err:
if err.errno == errorcode.ER_ACCESS_DENIED_ERROR:
print("Something is wrong with your user name or password")
elif err.errno == errorcode.ER_BAD_DB_ERROR:
print("Database does not exist")
else:
print(err)
DBcursor = database.cursor(buffered=True)
DBcursor2 = database.cursor(buffered=True)
# DB connection established. Now get the table:
query = ("SELECT * FROM googleplay_%s_test" % appname)
DBcursor.execute(query)
# Execute the date conversion:
for (id, user_name, date, url, rating, title, text, reply_date, reply_text) in DBcursor:
date_string = parse(date)
date_string.strftime("%Y-%m-%d")
conversion = ("UPDATE googleplay_%s_test SET date='date_string' WHERE id='id'" % appname)
DBcursor2.execute(conversion)
database.commit()
print("Convertet to: ", date_string)
# close the database connection
DBcursor.close()
DBcursor2.close()
database.close()
转换似乎有效。输出为:
Convertet to: 2016-12-02 00:00:00
Convertet to: 2016-11-25 00:00:00
Convertet to: 2016-11-16 00:00:00
Convertet to: 2016-12-04 00:00:00
这很好。但是,它不会将新值写入表中。首先,我认为 commit() 命令丢失了,但它确实存在。
最佳答案
这个:
conversion = ("UPDATE googleplay_%s_test SET date='date_string' WHERE id='id'" % appname)
DBcursor2.execute(conversion)
显然不会设置googleplay_<whatever>_test
为 date_string
的值变量 - 它将尝试将其设置为文本 'date_string'
字符串。 MySQL 很可能只是默默地跳过该操作(好吧,最多可能发出警告)并假装一切正常,就像默认 MySQL 设置一样。
编辑:这同样适用于 where
子句:
WHERE id='id'
只会尝试更新 id 为字符串 'id'
的记录。
你想要:
conversion = "UPDATE googleplay_%s_test SET date=%%s WHERE id=%%s" % appname
DBcursor2.execute(conversion, [date_string, id])
FWIW如果你只需要两个字段,你最好只检索这两个字段:
query = "SELECT id, date FROM googleplay_%s_test" % appname
DBcursor.execute(query)
for id, date in DBcursor:
# code here
当我们这样做时:
cursor.execute()
返回受查询影响(选择、更新、删除等)的行数database.commit()
跳出循环 - 一次提交速度更快,并且还确保要么应用所有更改,要么不应用所有更改,从而避免使数据库处于半支持状态。另请注意,您传递的内容为 date_string
这里实际上不是一个字符串,而是一个 datetime.datetime
对象,因为您丢弃了对 date_string.strftime()
的调用结果。但这应该没问题,dbapi 连接器应该知道如何在 db 和 python 类型之间进行转换。
最后:正确的数据库模式应该有一个 googleplay_test
表 appname
作为一个字段。
关于python - python commit() 的 mysql.connector 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41344332/
今天有小伙伴给我留言问到,try{...}catch(){...}是什么意思?它用来干什么? 简单的说 他们是用来捕获异常的 下面我们通过一个例子来详细讲解下
我正在努力提高网站的可访问性,但我不知道如何在页脚中标记社交媒体链接列表。这些链接指向我在 facecook、twitter 等上的帐户。我不想用 role="navigation" 标记这些链接,因
说现在是 6 点,我有一个 Timer 并在 10 点安排了一个 TimerTask。之后,System DateTime 被其他服务(例如 ntp)调整为 9 点钟。我仍然希望我的 TimerTas
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我就废话不多说了,大家还是直接看代码吧~ ? 1
Maven系列1 1.什么是Maven? Maven是一个项目管理工具,它包含了一个对象模型。一组标准集合,一个依赖管理系统。和用来运行定义在生命周期阶段中插件目标和逻辑。 核心功能 Mav
我是一名优秀的程序员,十分优秀!