python操作MySQL

#### 使用pymysql操作数据库

##### 1、安装

```

$ pip install pymysql

或者

$ python -m pip install pymysql

```

##### 2、操作

> 查询操作

```

import pymysql

# 打开数据库连接

db = pymysql.connect("10.26.171.90","ism","Ism@123","ism_aggregation",charset="utf8")

# 使用cursor()方法获取操作游标

cursor = db.cursor()

# SQL 查询语句

sql = "SELECT * FROM t_fund_info limit 10"

try:

  # 执行SQL语句

  cursor.execute(sql)

  # 获取所有记录列表

  results = cursor.fetchall()

  for row in results:

      vc_fund_id = row[0]

      vc_fund_name = row[1]

      vc_fund_simple_name = row[2]

except:

  print ("Error: unable to fetch data")

# 关闭数据库连接

db.close()

```

- fetchone(): 获取第一行数据。结果集是一个对象

- fetchmany(N): 获取前N行数据

- fetchall(): 获取所有返回结果

```

游标类型默认为元组,可以设置为其他形式

字典形式:

cur = db.cursor(cursor=pymysql.cursors.DictCursor)

```

> 增删改

db.commit()后才会更新到数据库追踪

```

import pymysql

# 打开数据库连接

db = pymysql.connect(host='xxx',port= 3306,user = 'xxx',passwd='xxx',db='xxx')

# 使用cursor()方法获取操作游标

cursor = db.cursor()

# SQL 更新语句

sql = "INSERT INTO t_fund_info(fund_id, fund_name, a, b, c, d, e, f, g, h, i, j) VALUES ('%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s')" % (id, name, a_value, b_value, c, d, e, f, g, h, i, j)

try:

  # 执行SQL语句

  cursor.execute(sql)

  # 提交到数据库执行

  db.commit()

except:

  # 发生错误时回滚

  db.rollback()

# 关闭数据库连接

db.close()

```

##### 3、游标操作

```

在fetch数据时按照顺序进行,可以使用cursor.scroll(num,mode)来移动游标位置,如:

cursor.scroll(1,mode='relative') # 相对当前位置移动

cursor.scroll(2,mode='absolute') # 相对绝对位置移动

```

##### 4、调用存储过程

```

#无参数存储过程

cursor.callproc('p1')  #等价于cursor.execute("call p1()")

#有参数存储过程

cursor.callproc('p2', args=(1, 2, 3, 4))

#获取执行完存储的参数,参数@开头

cursor.execute("select @p2,@_p2_1,@_p2_2,@_p2_3")

```

你可能感兴趣的:(python操作MySQL)