python连接MySQL

1、安装Python链接Mysql数据库的接口

python3一般使用PyMySQL模块,此模块也有支持python2的。

pip install pymysql

详请可参考:http://m.yiibai.com/python/python_database_access.html

在python2上还可使用MySQLdb模块,MySQLdb模块的名字在pip上叫MySQL-python。

pip install MySQL-python

PyMySQL的使用方法和MySQLdb几乎一样。

2、常用函数

Python DB API 2.0 对事务提供了两个方法:

  • 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) 返回一条结果行.
  • rowcount 这是一个只读属性,并返回执行execute() 方法后影响的行数。
  • scroll(self, value, mode='relative') 移动指针到某一行; 如果mode='relative',则表示从当前所在行移动value条,如果 mode='absolute',则表示从结果集的第一行移动value条.

3、数据库的连接与操作

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

# 连接数据库
conn = pymysql.connect('localhost', 'root', 'root')

# 也可以使用关键字参数
conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='root', db='yu_sq', charset='utf8')

# 也可以使用字典进行连接参数的管理
config = {
    'host': '127.0.0.1',
    'port': 3306,
    'user': 'root',
    'passwd': 'root',
    'db': 'yu_sq',
    'charset': 'utf8'
}
conn = pymysql.connect(**config)

# 如果使用事务引擎,可以设置自动提交事务,或者在每次操作完成后手动提交事务conn.commit()
conn.autocommit(1)    # conn.autocommit(True) 

# 使用cursor()方法获取操作游标
cursor = conn.cursor()
# 因该模块底层其实是调用CAPI的,所以,需要先得到当前指向数据库的指针。

try:
    # 创建数据库
    DB_NAME = 'test'
    cursor.execute('DROP DATABASE IF EXISTS %s' %DB_NAME)
    cursor.execute('CREATE DATABASE IF NOT EXISTS %s' %DB_NAME)
    conn.select_db(DB_NAME)

    #创建表
    TABLE_NAME = 'user'
    cursor.execute('CREATE TABLE %s(id int primary key,name varchar(30))' %TABLE_NAME)
          
    # 批量插入纪录
    values = [] 
    for i in range(20):
        values.append((i,'kk'+str(i)))
    cursor.executemany('INSERT INTO user values(%s,%s)',values)

    # 查询数据条目 
    count = cursor.execute('SELECT * FROM %s' %TABLE_NAME)
    print ('total records:', cursor.rowcount)
    
    # 获取表名信息 
    desc = cursor.description
    print ("%s %3s" % (desc[0][0], desc[1][0]))

    cursor.scroll(10,mode='absolute')
    results = cursor.fetchall()
    for result in results:
        print (result)

except:
    import traceback
    traceback.print_exc()
    # 发生错误时回滚
    conn.rollback()
finally:
    # 关闭游标连接
    cursor.close()
    # 关闭数据库连接
    conn.close()

 

发布了86 篇原创文章 · 获赞 70 · 访问量 16万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 编程工作室 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览