python 连接mysql数据建立表并插入数据详解,夜行者基地原创...转载请保留原创链接
http://www.scpman.com/forum.php?mod=viewthread&tid=144&page=1&extra=#pid218
红色表示报错信息
黑色是解说
绿色是解决方法


1、要想用python连接mysql首先要有mysql模块!

>>> import MySQLdb
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named MySQLdb
>>>
很明显这个模块当前安装的python 中没有

没有安装MySQLdb,去安装下
http://mysql-python.sourceforge.net/ 官方网站

http://sourceforge.net/projects/mysql-python/files/
这里可以直接下到相关的文件
http://jaist.dl.sourceforge.net/project/mysql-python/mysql-python-test/1.2.4b3/MySQL-python-1.2.4b3.win32-py2.7.exe

2、模块安装好后,就开始连接数据
本地环境中安装了一个mysql,用户名root 密码123456
我们写段代码测试下
#! /usr/bin/env python

#coding=utf-8
#夜行者基地:http://www.scpman.com
#夜行者基地交流1群:119848305
import os, sys, string
import MySQLdb

con=MySQLdb.connect(host='localhost',user='root',passwd='123456',db='test')
if con:
print 'ok'

运行之:
> "C:\Python27\python.exe" -u "C:\Users\Administrator\Desktop\mysql.py"
ok #连接成功,说明可用
我故意把root写成root1
return Connection(*args, **kwargs)
File "C:\Python27\lib\site-packages\MySQLdb\connections.py", line 187, in __init__
super(Connection, self).__init__(*args, **kwargs2)
_mysql_exceptions.OperationalError: (1045, "Access denied for user
'root1'@'localhost' (using password: YES)")
有报错说明,这段代码是正常的
3、用python连接数据库建立一张数据库表,插入数据,并显示出来
#! /usr/bin/env python
#coding=utf-8
#夜行者基地:http://www.scpman.com
#夜行者基地交流1群:119848305

import os, sys, string
import MySQLdb

con=MySQLdb.connect(host='localhost',user='root',passwd='123456',db='test') #@1
cursor = con.cursor()
sql="""CREATE TABLE IF NOT student ( SNO int(11) NOT NULL auto_increment,
SNAME char(8) NOT NULL, SEX char(2) default NULL, DEPINO int(11) default NULL,
PRIMARY KEY (SNO), UNIQUE KEY SNAME (SNAME)) ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
""" #@2

#cursor.execute(sql)


sql2="insert into STUDENT(SNAME,SEX,DEPINO)values('AA','M',13);insert into STUDENT(SNAME,SEX,DEPINO)values('BB','G',16);"#@3
sql3="select * from STUDENT;"#@4
cursor.execute(sql2)
cursor.execute(sql3)
alldata = cursor.fetchall()#@5


print " SNO SNAME SEX DEPINO" #@6
if alldata:
for rec in alldata:
print "%5s %5s %5s %5s"%(rec[0],rec[1],rec[2],rec[3]) #@7
cursor.close() #@8
con.close()

说明:
#@1
定义Host username passwd dbname
模块功能:connect()方法
* connect()方法用于连接数据库,返回一个数据库连接对象。如果要连接一个位于host.remote.com服务器上名为fourm的MySQL数据库,连接串可以这样写:
db = MySQLdb.connect(host="remote.com",user="user",passwd="xxx",db="fourm" )

connect()的参数列表如下:
host,连接的数据库服务器主机名,默认为本地主机(localhost)。
user,连接数据库的用户名,默认为当前用户。
passwd,连接密码,没有默认值。
db,连接的数据库名,没有默认值。
conv,将文字映射到Python类型的字典。默认为MySQLdb.converters.conversions
cursorclass,cursor()使用的种类,默认值为MySQLdb.cursors.Cursor。
compress,启用协议压缩功能。
named_pipe,在windows中,与一个命名管道相连接。
init_command,一旦连接建立,就为数据库服务器指定一条语句来运行。
read_default_file,使用指定的MySQL配置文件。
read_default_group,读取的默认组。
unix_socket,在unix中,连接使用的套接字,默认使用TCP。
port,指定数据库服务器的连接端口,默认是3306。

#@2 一段sql用来建立一张student表共有SNO SNMAE SEX DEPINO 4个字段
#@3 这是两条sql是用来在student表中插入AA BB两个学生的信息
#@4 查询student表中的所有数据
#@5 cursor.fetchall()
*指针对象的cursor.fetchall()可取出指针结果集中的所有行,返回的结果集一个元组(tuples)。
其他相关:
*指针对象的cursor.execute(query[,parameters])方法执行数据库查询。
*指针对象的cursor.fetchall()可取出指针结果集中的所有行,返回的结果集一个元组(tuples)。
*指针对象的cursor.fetchmany([size=cursor.arraysize])从查询结果集中取出多行,我们可利用可选的参数指定取出的行数。
*指针对象的cursor.fetchone()从查询结果集中返回下一行。
*指针对象的cursor.arraysize属性指定由cursor.fetchmany()方法返回行的数目,影响fetchall()的性能,默认值为1。
*指针对象的cursor.rowcount属性指出上次查询或更新所发生行数。-1表示还没开始查询或没有查询到数据。
#@6 打印一个标题出来
#@7 将数据库查询出来的结果集循环输出
#@8 *指针对象的cursor.close()方法关闭指针并释放相关资源。
其他参考:* 连接对象的db.close()方法可关闭数据库连接,并释放相关资源。
* 连接对象的db.cursor([cursorClass])方法返回一个指针对象,用于访问和操作数据库中的数据。
* 连接对象的db.begin()方法用于开始一个事务,如果数据库的AUTOCOMMIT已经开启就关闭它,直到事务调用commit()和rollback()结束。
*连接对象的db.commit()和db.rollback()方法分别表示事务提交和回退。

python 连接mysql数据建立表并插入数据详解,夜行者基地原创...转载请保留原创链接
http://www.scpman.com/forum.php?mod=viewthread&tid=144&page=1&extra=#pid218
红色表示报错信息
黑色是解说
绿色是解决方法