mysql timestamp爲0值時,python讀取後的對象爲None

MySQL數據表中,如果timestamp類型的字段,值爲0, python從數據庫讀取數據後,得到對象是什麼類型,是否爲None呢?

下面來測試下。

創建數據表

首先創建數據表,其中字段pr_rule_update_time爲timestamp類型,值爲0.

CREATE TABLE `orange_service` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `service_group_name` varchar(100) NOT NULL,
  `pr_rule` tinyint(3) NOT NULL DEFAULT '-1',
  `pr_rule_update_time` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
  `pr_rule_reason` varchar(256) NOT NULL DEFAULT '',
  `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_group_host_port` (`service_group_name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

插入數據

向數據表中插入一條記錄。

mysql> insert into orange_service(service_group_name, pr_rule, pr_rule_reason) values('test', 0, '');
Query OK, 1 row affected (0.03 sec)

mysql> select * from orange_service\G
*************************** 1. row ***************************
                        id: 1
        service_group_name: test
            promotion_rule: 0
promotion_rule_update_time: 0000-00-00 00:00:00
     promotion_rule_reason:
               create_time: 2019-10-08 16:52:19
1 row in set (0.03 sec)

python 讀取數據

通過python讀取數據。

import MySQLdb

host = "10.66.99.88"
port = 5002
sql = "select * from cmdb.orange_service"
user = "test"
passwd = "test123456"

conn = MySQLdb.connect(host=host, port=port, user=user,passwd=passwd, connect_timeout=2, charset="utf8")

cursor = conn.cursor()
cursor.execute(sql)

ret = cursor.fetchone()

print(ret)

cursor.close()
conn.close()

output:

(1, 'test', 0, None, '', datetime.datetime(2019, 10, 8, 16, 52, 19))

從輸出可以看到,timestamp類型的字段,通過python讀取後,值爲None。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章