您的位置:首页 > 运维架构 > Linux

【原创】 linux-python-MySQL…

2017-03-20 14:42 495 查看
贴部分代码上来,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!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: