【原创】 linux-python-MySQL…

贴部分代码上来,linux-python-MySQL-MySQLdb insert commit .
切记,数据库操作一定要commit()   !!!!
如下代码:

    try:
      conn=Mysqldb.connect(
            host='localhost',
            user='root',
            passwd='********',
            port=3306,
            db='dataservice',
            charset='utf8')
      cur = conn.cursor(Mysqldb.cursors.DictCursor)
      sql_ = "INSERT INTO song_play_log(song_id,artist_id,play_num,play_time,time,hot) SELECT * FROM add_yesDay;"
      ex = cur.execute(sql_)
      is_ok = 1
      self.save_dict["Data_Date"] = self.default_YesDay_Date
      self.save_dict["Operate_Date"] = self.default_ToDay_Date
      if ex:
        self.save_dict["DB_Qeury"] = True
        self.flush_content("Query OK,Update DB,Add new row %s" % ex)
        self.mail_sub += "Update DB, Query OK!"
        is_ok = 1
      else:
        self.save_dict["DB_Qeury"] = False
        self.flush_content("Query Error,Update dataservice_song_play_log,Add new row %s" % ex)
        self.mail_sub += "Update DB, [Query Error]"
        is_ok = 2
      self.save_dict["DB_Add_Row"] = ex if ex>=0 else -1
      self.save_log(2,self.content)
      cur.close()
      conn.close()
看起来比较完善的代码,数据库的量非常大!每天都要记录7k-8k的数据。
21号22号23号24号我一直在本机调试,挺顺利的嘛,哈哈,邮件也能收到通知。
24号下午,我正式把代码上线了!!!Bug!!Bug!!!我没有发现,
21-24号的数据为2.2w+,今天也就是2013-12-02号,因为项目需求,我想到了看看自己的得意之作~~这得有多少量啦,我ssh远程登录后mysql中执行如下:
select * from song_play_log order by time desc limit 1-20;
为什么time是全部是2013-11-24!!!!我懵了,这一周的数据哪去了!!!
少了几w记录,完了。。。
可是每天都能收到邮件:
From:*********@gmail.com
Sub:Update DB, Query OK!
To:*********@gmail.com
Content:
Start Update DB log. 
DB YesDay_Date and Operate_Date,Is True. 
Stat Update the dataservice 
Query OK,Update DB,Add new row 4997 
End Update the dataservice 
Updated Every Day Log 
End Update DB
可是数据哪去了,我开始查找Mysql日志,/var/log/mysql.log ,空! 日志根本没开。
问老板有MySQL备份没,没。
查找SQL语句执行记录,无!
我懵了。。。
我是真懵了,东西哪去了。。。
知道后来,我才想到,我之前一直玩的SQL Server,在项目中其他的语句也都是用的proc。
我试着google mysqldb insert commit ,结果你懂的。。。
commit!!!最关键的东西我竟然没写。
于是乎,补救吧,先改代码修改如下:
    try:
      conn=Mysqldb.connect(
            host='localhost',
            user='root',
            passwd='********',
            port=3306,
            db='dataservice',
            charset='utf8')
      conn.autocommit(1)
      cur = conn.cursor(Mysqldb.cursors.DictCursor)
      ... ... (数据库连接之后设置 自动提交。)
或者
    try:
      conn=Mysqldb.connect(
            host='localhost',
            user='root',
            passwd='********',
            port=3306,
            db='dataservice',
            charset='utf8')
      cur = conn.cursor(Mysqldb.cursors.DictCursor)
      sql_ = "INSERT INTO song_play_log(song_id,artist_id,play_num,play_time,time,hot) SELECT * FROM add_yesDay;"
      ex = cur.execute(sql_)
      conn.commit()
      ... ...(insert语句执行后 手动提交)
切记!!!commit!!
增,删,改一定要commit!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值