just referred to http://zetcode.com/databases/mysqlpythontutorial/
[ MySQL configuration ]
DB name : testdb
table name : test
| 
# mysql -u root -p 
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g. 
Your MySQL connection id is 10 
Server version: 5.1.61 Source distribution 
Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved. 
Oracle is a registered trademark of Oracle Corporation and/or its 
affiliates. Other names may be trademarks of their respective 
owners. 
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. 
mysql> show databases; 
+--------------------+ 
| Database           | 
+--------------------+ 
| information_schema | 
| mysql              | 
| testdb             | 
+--------------------+ 
3 rows in set (0.00 sec) 
mysql> use testdb 
Reading table information for completion of table and column names 
You can turn off this feature to get a quicker startup with -A 
Database changed 
mysql> show tables; 
+------------------+ 
| Tables_in_testdb | 
+------------------+ 
| test             | 
+------------------+ 
1 row in set (0.00 sec) 
mysql> select * from test; 
+------+------+ 
| num  | name | 
+------+------+ 
|    1 | foo  | 
|    2 | bar  | 
+------+------+ 
2 rows in set (0.00 sec) 
mysql> quit 
Bye | 
[ MySQL-python example ]
install MySQL-python module.
| 
# yum install -y MySQL-python | 
[ retrieve data ]
| 
# cat retrieve_data_mySQL.py 
#!/usr/bin/env python 
import MySQLdb 
import sys 
conn = None 
try: 
        conn = MySQLdb.connect('localhost','test','pass','testdb') 
        cur = conn.cursor() 
        cur.execute("SELECT * FROM test") 
#       cur.execute("SELECT * FROM test where num=1") 
        numrows = int(cur.rowcount) 
        for i in range(numrows): 
                row = cur.fetchone() 
                print row[0], row[1] 
except: 
        print "error" 
        sys.exit(1) 
cur.close() 
conn.close() | 
| 
# ./retrieve_data_mySQL.py 
1 foo 
2 bar | 
[ insert data ]
| 
# egrep -v ^# insert_data_mySQL.py 
import MySQLdb 
import sys 
conn = None 
try: 
        conn = MySQLdb.connect('localhost','test','pass','testdb') 
        cur = conn.cursor() 
        sql = u"insert into test values('3','hoge')" 
        cur.execute(sql) 
        sql = u"insert into test values('4','hogehoge')" 
        cur.execute(sql) 
        conn.commit() 
except: 
        print "error" 
        sys.exit(1) 
cur.close() 
conn.close() | 
before inserting data
| 
# ./retrieve_data_mySQL.py 
1 foo 
2 bar | 
insert data
| 
# ./insert_data_mySQL.py 
# echo $? 
0 | 
after inserting data
| 
# ./retrieve_data_mySQL.py 
1 foo 
2 bar 
3 hoge 
4 hogehoge | 
[ delete data ]
| 
# cat delete_data_mySQL.py 
#!/usr/bin/env python 
import MySQLdb 
import sys 
conn = None 
try: 
        conn = MySQLdb.connect('localhost','test','pass','testdb') 
        cur = conn.cursor() 
#       cur.execute("SELECT * FROM test") 
#       cur.execute("SELECT * FROM test where num=1") 
        cur.execute("DELETE FROM test WHERE num = 3") 
        cur.execute("DELETE FROM test WHERE num = 4") 
        conn.commit() 
except: 
        print "error" 
        sys.exit(1) 
cur.close() 
conn.close() | 
| 
# ./delete_data_mySQL.py 
# ./retrieve_data_mySQL.py 
1 foo 
2 bar | 
[ update data ]
| 
mysql> select * from test; 
+------+----------+ 
| num  | name     | 
+------+----------+ 
|    1 | foo      | 
|    2 | bar      | 
|    3 | hoge     | 
|    4 | hogehoge | 
+------+----------+ 
4 rows in set (0.00 sec) 
mysql> | 
I’ll update name “foo” to “foobar”
| 
mysql> select name from test where num=2; 
+------+ 
| name | 
+------+ 
| bar  | 
+------+ 
1 row in set (0.00 sec) 
mysql> | 
| 
# vi update_data_mySQL.py 
#!/usr/bin/env python 
import MySQLdb 
import sys 
conn = None 
try: 
        conn = MySQLdb.connect('localhost','test','pass','testdb') 
        cur = conn.cursor() 
#       cur.execute("SELECT * FROM test") 
#       cur.execute("SELECT * FROM test where num=1") 
        cur.execute("UPDATE test SET name = %s WHERE num = %s",("foobar","2")) 
        conn.commit() 
except: 
        print "error" 
        sys.exit(1) 
cur.close() 
conn.close() | 
before updating
| 
# ./retrieve_data_mySQL.py 
1 foo 
2 bar 
3 hoge 
4 hogehoge | 
update
| 
# ./update_data_mySQL.py | 
after updating
| 
# ./retrieve_data_mySQL.py 
1 foo 
2 foobar 
3 hoge 
4 hogehoge | 
[ create table and insert data ]
| 
# cat create_table_insert_data_mySQL.py 
#!/usr/bin/env python 
import MySQLdb 
import sys 
conn = None 
try: 
        conn = MySQLdb.connect('localhost','test','pass','testdb') 
        cur = conn.cursor() 
        cur.execute("CREATE TABLE IF NOT EXISTS Testtable(Id INT PRIMARY KEY AUTO_INCREMENT, Name VARCHAR(20))") 
        sql = u"INSERT INTO Testtable VALUES('1','foo')" 
        cur.execute(sql) 
        sql = u"INSERT INTO Testtable VALUES('2','zzz')" 
        cur.execute(sql) 
        conn.commit() 
except: 
        print "error" 
        sys.exit(1) 
cur.close() 
conn.close() | 
| 
# ./create_table_insert_data_mySQL.py | 
| 
# mysql -u root -p 
mysql> use testdb; 
Reading table information for completion of table and column names 
You can turn off this feature to get a quicker startup with -A 
Database changed 
mysql> show tables; 
+------------------+ 
| Tables_in_testdb | 
+------------------+ 
| Testtable        | 
| test             | 
+------------------+ 
2 rows in set (0.00 sec) 
mysql> select * from Testtable; 
+----+------+ 
| Id | Name | 
+----+------+ 
|  1 | foo  | 
|  2 | zzz  | 
+----+------+ 
2 rows in set (0.00 sec) 
mysql> quit 
Bye | 
[ monitor DB ]
DB : testdb
table : Testtable
| 
mysql> select * from Testtable; 
+----+-------+ 
| Id | Name  | 
+----+-------+ 
|  1 | Alive | 
+----+-------+ 
1 row in set (0.00 sec) | 
If the string of row #1 matches Alive , this script regards MySQL as Alive.
| 
# cat monitor_mySQL.py 
#!/usr/bin/env python 
import MySQLdb 
import sys 
conn = None 
try: 
        conn = MySQLdb.connect( 
                host = "localhost", 
                user = "test", 
                passwd = "pass", 
                db ="testdb", 
                port = 3306) 
        cur = conn.cursor() 
        cur.execute("SELECT * FROM  Testtable") 
        numrows = int(cur.rowcount) 
except MySQLdb.Error, e: 
        print "Can't connect to MySQL"; 
        sys.exit(1) 
for i in range(numrows): 
        row = cur.fetchone() 
if ( "Alive" == row[1]): 
        print "Alive" 
        cur.close() 
        conn.close() 
        sys.exit(0) 
else: 
        print "String does not match" 
        cur.close() 
        conn.close() 
        sys.exit(1) | 
when the string is Alive
| 
mysql> select * from Testtable where Id=1; 
+----+-------+ 
| Id | Name  | 
+----+-------+ 
|  1 | Alive | 
+----+-------+ 
1 row in set (0.00 sec) | 
| 
# ./monitor_mySQL.py 
Alive | 
when the string is not “Alive”
| 
mysql> select * from Testtable where Id=1; 
+----+--------+ 
| Id | Name   | 
+----+--------+ 
|  1 | foobar | 
+----+--------+ 
1 row in set (0.00 sec) | 
| 
# ./monitor_mySQL.py 
String does not match | 
when MySQL is down
| 
# /etc/init.d/mysqld stop 
Stopping mysqld:  [  OK  ] | 
| 
# ./monitor_mySQL.py 
Can't connect to MySQL | 
No comments:
Post a Comment
Note: Only a member of this blog may post a comment.