【原创】 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:
可是数据哪去了,我开始查找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!
切记,数据库操作一定要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!
相关文章推荐
- 【原创】 linux-python …
- 【原创】 linux mysql&n…
- 【原创】 linux-python …
- 【原创】 linux-python …
- 【原创】 linux-python …
- 【原创】python mysql-connec…
- 【原创】 linux-python …
- 【原创】 linux-mysql p…
- 【原创】python mysql C…
- 【原创】 linux Python 列表整合
- 【原创】 linux-mysql E…
- 【原创】 linux-mysql …
- 【原创】 linux-python …
- 【原创】 linux-python …
- 【原创】mysql-python安装 dj…
- 【原创】Linux-Ubuntu 12.4&n…
- 【原创】Linux Shell/Bash&nb…
- 【原创】python 文件操作-路径
- 【原创】python assert 断言
- 【原创】Linux-Ubuntu 12.04&…