python操作mysql数据库
1.python操作mysql数据库基础
对于python操作mysql数据库,我们认为其实是模拟dba的手工操作,不仅丰富了mysql的管理,而且使数据库的管理更加高效。
首先我们要开启数据库:
编写连接mysql 数据库的模块
//connect_mysql.py
#!/usr/bin/env python
#-*-coding:utf-8-*-
#-*-coding:gbk-*-
from getopt import *
import MySQLdb
import sys
import os
#set short and long options list
s_options="h:p:u:p:"
l_options=['host=', 'port=', 'user=', 'passwd=']
# set enum
HOST, PORT, USER, PASSWD = range(4)
VALUE=1
""" function: connect to mysql database """
def connect_mysql(hostname, port, user, password):
try:
connect = MySQLdb.connect(host=hostname, port=int(port), user=user,
passwd=password)
except MySQLdb.Error, error:
try:
sqlError = 'Error %d:%s' % (error.args[0], error.args[1])
except IndexError:
print "MySQL Error:%s" % str(error)
return connect;
if __name__ == '__main__':
options,args = getopt(sys.argv[1:], s_options, l_options)
connect = connect_mysql(hostname = options[HOST][VALUE],
port = options[PORT][VALUE],
user = options[USER][VALUE],
password = options[PASSWD][VALUE])
#get curs object
cursobj = connect.cursor()
#create database
cursobj.execute("create database if not exists python_test charset utf8;")
#create table
cursobj.execute("create table if not exists python_test.user(userid int not null, user_name char(20) not null, password char(20) not null, primary key(userid))engine=innodb default charset=utf8;")
#insert to table
insert_user = "insert into python_test.user value(%s, %s, password(%s))"
cursobj.execute(insert_user, (int(1), 'zhangchi', 'redhat'));
cursobj.execute(insert_user, (int(2), 'haha', 'test1'));
cursobj.execute(insert_user, (int(3), 'hehe', 'test2'));
cursobj.execute(insert_user, (int(4), 'exam', 'world'));
cursobj.execute(insert_user, (int(5), 'boy', 'girl'));
#close cursor
cursobj.close()
#put the business
connect.commit()
#close mysql connect
connect.close()
需要注意以下几点:
1.要想使用python连接数据库,我们需要导入MySQLdb模块,直接添加即可(前一个章节学习了如何安装该模块)。
2.通过MySQLdb.connect连接数据库,该函数需要的参数包括:
host、port、user、passwd
因为数据库的连接有可能会失败(访问被拒绝,访问远程数据库网络不通等情况),所以我们在这里采用包裹函数(第一次是在C语言中接触到)进行封装。
3.在main函数中我们通过命令行传递参数的方式传递了上述的四个参数,确立了数据库操作的游标:
options,args = getopt(sys.argv[1:], s_options, l_options)
connect = connect_mysql(hostname = options[HOST][VALUE],
port = options[PORT][VALUE],
user = options[USER][VALUE],
password = options[PASSWD][VALUE])
#get curs object
cursobj = connect.cursor()
4.当获取了游标之后,我们就可以开始对数据库进行操作,在上述的例子中创建了名为python_test的数据库,以及名为user的数据表(其在python_test数据库中)。并且向该数据表中插入了多条数据。
2.需要改进的地方
1.如果你编写了不少示例可以发现,python对数据库的操作经常会出现异常、错误或者警告,我们需要对这些异常进行处理。
2.当然命令行的界面确实比较粗糙,如果能够采用图形的界面对数据库进行操作是最好不过的了
3.手工的进行添加效率太低,如果能够通过文件的导入则会更好。
小结 在后续的章节中,我们将要继续学习python的相关操作。希望能够继续的完善该功能,敬请期待。