Python操作Mysql数据库学习笔记
linux环境下 确保MySQL-python已经安装。
一:简单的MYSQL连接实例:
1.导入模块:
import MySQLdb
2:连接数据库:
conn = MySQLdb.connect(host='localhost',port=3306,user='root',passwd='admin',unix_socket='/usr/local/mysql-5.1.68/tmp/mysql.sock')
cur = conn.cursor( )
conn.select_db('python')
cur.execute("insert into wp_usermeta(user_id,meta_key,meta_value) value(2,'cname','testuser')")
3:便捷数据插入方法:
conn = MySQLdb.connect(host='localhost',port=3306,user='root',passwd='admin',unix_socket='/usr/local/mysql-5.1.68/tmp/mysql.sock')
cur = conn.cursor( )
conn.select_db('python')
sqli = "insert into wp_usermeta(user_id,meta_key,meta_value) value(%s,%s,%s)"
cur.execute(sqli,(2,'a','auser'))
4:批量插入多条数据:
conn = MySQLdb.connect(host='localhost',port=3306,user='root',passwd='admin',unix_socket='/usr/local/mysql-5.1.68/tmp/mysql.sock')
cur = conn.cursor( )
conn.select_db('python')
sqli = "insert into wp_usermeta(user_id,meta_key,meta_value) values(%s,%s,%s)" #注意这里是values
cur.executemany(sqli,[(1,'aa','aauser'),(3,'b','buser')]) #通过executemany进行列表数据批量导入
5:脚本创建数据库演示:
[root@sa ~]# cat create_db.py
#!/usr/bin/env python
#create database for mysql
import MySQLdb
Socket="/usr/local/mysql-5.1.68/tmp/mysql.sock"
conn = MySQLdb.connect(host='localhost',port=3306,user='root',passwd='admin',unix_socket=Socket)
cur = conn.cursor( )
cur.execute('''create database python''')
cur.close();
6:批量插入数据库操作演示:
1 [root@sa ~]# cat insert_db.py 2 #!/usr/bin/env python 3 #create database for mysql 4 import MySQLdb 5 6 Socket="/usr/local/mysql-5.1.68/tmp/mysql.sock" 7 conn = MySQLdb.connect(host='localhost',port=3306,user='root',passwd='admin',unix_socket=Socket) 8 cur = conn.cursor( ) 9 cur.execute("""create database if not exists python""") 10 conn.select_db('python'); 11 cur.execute("""create table test(id int,info varchar(100))""") 12 #value = [1,"test"]; 13 #cur.execute("insert into test values(%s,%s)",value) 14 15 values=[] 16 for i in range(1000): 17 values.append((i,'Hello' + str(i))) 18 cur.executemany("""insert into test values(%s,%s)""",values); #注意后面的values 19 cur.close();
7:数据查询:
1 [root@sa ~]# cat select_db.py 2 #!/usr/bin/env python 3 #coding:utf-8 4 #create database for mysql 5 import MySQLdb 6 7 Socket="/usr/local/mysql-5.1.68/tmp/mysql.sock" 8 conn = MySQLdb.connect(host='localhost',port=3306,user='root',passwd='rgsh-xmrh#3Q',unix_socket=Socket,db='python') 9 cur = conn.cursor( ) 10 count = cur.execute("""select * from test""") 11 12 print "="*20 13 print "总共有 %s 条记录:" % count 14 print "="*20 15 16 print "只获取一天记录:" 17 print "="*20 18 result = cur.fetchone(); 19 #print result 20 print 'ID: %s | info: %s' % result 21 print "="*20 22 23 print "获取15天的记录:" 24 result=cur.fetchmany(15) 25 for r in result: 26 print r 27 28 print "获取全部信息:" 29 print "="*20 30 cur.scroll(0,mode='absolute') #重置游标位置0,为偏移量 mode=absolute|relative,默认为relative, 31 result=cur.fetchall() 32 for r in result: 33 print r 34 cur.close();
以上脚本执行结果如下:
[root@sa ~]# python select_db.py|more
====================
总共有 1000 条记录:
====================
只获取一天记录:
====================
ID: 0 | info: Hello0
====================
获取15天的记录:
(1L, 'Hello1')
(2L, 'Hello2')
(3L, 'Hello3')
(4L, 'Hello4')
(5L, 'Hello5')
(6L, 'Hello6')
(7L, 'Hello7')
(8L, 'Hello8')
(9L, 'Hello9')
(10L, 'Hello10')
(11L, 'Hello11')
(12L, 'Hello12')
(13L, 'Hello13')
(14L, 'Hello14')
(15L, 'Hello15')
获取全部信息:
====================
(0L, 'Hello0')
(1L, 'Hello1')
(2L, 'Hello2')
--More--
--------------------------------------------------------------------------------------------------------------
其它相关存档记录学习:(文档部分来源于互联网)
connect()参数列表如下:
host: MySQL服务器名
user: 数据库使用者
passwd: 用户登录密码
db: 操作的数据库名
charset: 使用的字符集(一般是gb2312)
cur=conn.cursor( ) 其实就是用来获得python执行Mysql命令的方法,也就是我们所说的操作游标
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
db.close() 方法可关闭数据库连接,并释放相关资源
db.cursor([cursorClass]) 方法返回一个指针对象,用于访问和操作数据库中的数据
db.begin() 方法用于开始一个事务,如果数据库的AUTOCOMMIT已经开启就关闭它,直到事务调用
commit()和rollback()结束
连接对象conn.commit()和db.rollback() 方法分别表示事务提交和回退
指针对象的cursor.close() 方法关闭指针并释放相关资源
指针对象的cursor.execute(query[,parameters]) 方法执行数据库查询
指针对象的cursor.fetchall() 可取出指针结果集中的所有行,返回的结果集一个元组(tuples)
指针对象的cursor.fetchmany([size=cursor.arraysize]) 从查询结果集中取出多行,我们可利用可选的参数指定取出的行数
指针对象的cursor.fetchone() 从查询结果集中返回下一行
指针对象的cursor.arraysize 属性指定由cursor.fetchmany()方法返回行的数目,影响fetchall()的性能,默认值为1
指针对象的cursor.rowcount 属性指出上次查询或更新所发生行数,-1表示还没开始查询或没有查询到数据
commit() 提交
rollback() 回滚
cursor用来执行命令的方法:
callproc(self,procname,args): 用来执行存储过程,接收的参数为存储过程名和参数列表,返回值为受影响的行数
execute(self,query,args): 执行单条sql语句,接收的参数为sql语句本身和使用的参数列表,返回值为受影响的行数
executemany(self,query,args): 执行单挑sql语句,但是重复执行参数列表里的参数,返回值为受影响的行数
nextset(self): 移动到下一个结果集
cursor用来接收返回值的方法:
fetchall(self): 接收全部的返回结果行.
fetchmany(self, size=None): 接收size条返回结果行.如果size的值大于返回的结果行的数量,则会返回cursor.arraysize条数据.
fetchone(self): 返回一条结果行.
scroll(self, value, mode='relative'): 移动指针到某一行.如果mode='relative',则表示从当前所在行移动value条,如果 mode='absolute',则表示从结果集的第一行移动value条.

浙公网安备 33010602011771号