Python Mysql 交互

Mysql 安装Python模块

 
Linux:
yum install MySQL-python

 

Windos:

https://files.cnblogs.com/files/wupeiqi/py-mysql-win.zip

 

用户授权:
mysql> grant all on *.* to 'root'@'%' identified by "123456";

 


 

MySQLdb

MySQLdb默认在3.0后不支持,最后一次更新在2014年。

 

例子1:插入一条数据
import MySQLdb

# 创建链接实例对象
conn = MySQLdb.connect(host='127.0.0.1',user='root',passwd='1234',db='mydb')

# 选定光标
cur = conn.cursor()

# 光标.execute 数据库执行命令
reCount = cur.execute('insert into UserInfo(Name,Address) values(%s,%s)',('alex','usa'))
# reCount = cur.execute('insert into UserInfo(Name,Address) values(%(id)s, %(name)s)',{'id':12345,'name':'wupeiqi'})

# 提交
conn.commit()

# 关闭光标
cur.close()

# 关闭链接
conn.close()

print(reCount)
View Code

 

例子2:批量插入数据
import MySQLdb

# 创建链接实例对象
conn = MySQLdb.connect(host='127.0.0.1',user='root',passwd='1234',db='mydb')

# 选定光标
cur = conn.cursor()

# 创建values列表
li =[
     ('alex','usa'),
     ('sb','usa'),
]

# 将列表传入到命令中 光标.executemany 自动将列表循环
reCount = cur.executemany('insert into UserInfo(Name,Address) values(%s,%s)',li)

# 提交命令
conn.commit()

# 关闭光标
cur.close()

# 关闭链接
conn.close()

print(reCount)
View Code

 


 

PyMySQL
在fetch数据时按照顺序进行,可以使用cursor.scroll(num,mode)来移动游标位置
    • cursor.scroll(1,mode='relative')  # 相对当前位置移动
    • cursor.scroll(2,mode='absolute') # 相对绝对位置移动
 
例子1:基本使用
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import pymysql

# 创建连接
conn = pymysql.connect(host='192.168.1.154', port=3306, user='root', passwd='123456', db='xiang')

# 创建游标
cursor = conn.cursor()


# 一. execute 执行一条SQL
# 执行SQL获取表内数据,并返回收影响行数
#effect_row = cursor.execute("select * from xxx")

# 1.fetchone() 递增输出信息
# 取回数 有几条数据
#print(effect_row)
# 取回第一条数据
#print(cursor.fetchone())
# 取回第二条数据
#print(cursor.fetchone())

#print('---------------')

# 2.fetchall() 获取游标后面所有条数
#print(cursor.fetchall())

# 3.fetchmany(num) 指定获取几条数据
# print(cursor.fetchmany())



# 二.executemany 以列表形式循环values
# 创建value数据
# data = [
#     ("miya","2015-05-21"),
#     ("anni","2015-05-22"),
#     ("roli","2015-05-23"),
#     ("xity","2015-05-24"),
# ]
# 执行SQL,并返回受影响行数executemany 循环列表内数据
# effect_row = cursor.executemany("insert into xxx (name1,register_data) values(%s,%s)",data)



# 提交,不然无法保存新建或者修改的数据
# 默认开启事务提交完成
conn.commit()

# 关闭游标
cursor.close()
# 关闭连接
conn.close()
View Code

 

例子2:字典类型打印

#!/usr/bin/env python
# -*- coding:utf-8 -*-
import pymysql

conn = pymysql.connect(host='192.168.1.154', port=3306, user='root', passwd='123456', db='xiang')

# 游标设置为字典类型 cursor=pymysql.cursors.DictCursor
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)

# 执行sql
r = cursor.execute("select * from xxx")

# 获取第一行
result = cursor.fetchone()

# 获取字典
print(result)

# 提交事务
conn.commit()

# 关闭游标
cursor.close()

# 关闭链接
conn.close()
View Code

 

 

posted @ 2018-01-21 15:55  kevin.Xiang  阅读(267)  评论(0编辑  收藏  举报