python 操作 mysql 数据库 datetime 属性字段为 0000-00-00 00:00:00 的问题

撇开 sqlalchemy, 先讲 MySQLdb 和 pymysql

mysql 版本 mysql  Ver 14.14 Distrib 5.1.73

 

新建一个测试表 test, 结构如下:

mysql> desc test;
+----------+----------+------+-----+---------+-------+
| Field    | Type     | Null | Key | Default | Extra |
+----------+----------+------+-----+---------+-------+
| id       | int(11)  | NO   | PRI | NULL    |       |
| req_time | datetime | YES  |     | NULL    |       |
+----------+----------+------+-----+---------+-------+
2 rows in set (0.00 sec)

 

使用 MySQLdb 原生转义

cursor.execute("insert into test values (%s, %s)", (1, None))

None 插入后在 mysql 显示为 NULL

mysql> select * from test;
+----+----------+
| id | req_time |
+----+----------+
|  1 | NULL     |
+----+----------+

 

如果自己拼接 sql, 就会遇到问题

cursor.execute("insert into test values (%s, '%s')" % (0, None))

None 插入后在 mysql 显示为 0000-00-00 00:00:00

mysql> select * from test;
+----+---------------------+
| id | req_time            |
+----+---------------------+
|  0 | 0000-00-00 00:00:00 |
+----+---------------------+

 

对于大批量的插入, 可以使用 cursor.executemany, 唯一的缺点就是, sql 语句要写太多的 "%s", 看起来不够美观.

从各个方面看, sqlalchemy 是最好的选择, 有时间再更新 sqlalchemy 的内容.

 

转载于:https://www.cnblogs.com/senjougahara/p/6361120.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值