搜鞥都哦 发表于 2018-10-3 06:48:09

mysql连接模块

mysql连接模块
  什么是 PyMySQL?
  PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务器的一个库,Python2中则使用mysqldb。
  PyMySQL 安装
  pip install PyMySQL
  数据库连接
  连接数据库前,请先确认以下事项:
  已经创建了数据库 TESTDB
  mysql> desc stu;
  +-------+--------------+------+-----+---------+----------------+
  | Field | Type         | Null | Key | Default | Extra          |
  +-------+--------------+------+-----+---------+----------------+

  |>  | name| varchar(100) | NO   |   | NULL    |                |
  | age   | int(100)   | NO   |   | NULL    |                |
  +-------+--------------+------+-----+---------+----------------+
  #打开数据库连接
  conn = pymysql.connect(host="192.168.1.48", port=3306, user="root", passwd="123456", db="TESTDB")
  #使用cursor()方法获取操作游标
  cus = conn.cursor()
  sql = "select * from stu;"
  #使用execute方法执行SQL语句
  cus.execute(sql)
  #使用 fetchone() 方法获取一条数据
  result = cus.fetchall()
  print(result)
  #关闭游标连接
  cus.close()
  #关闭数据库连接
  conn.close()
  执行以上脚本输出结果如下:
  ((1, 'a', 12), (2, 'b', 13))

mysql事物
  MySQL 事务主要用于处理操作量大,复杂度高的数据。比如说,在人员管理系统中,你删除一个人员,你即需要删除人员的基本资料,也要删除和该人员相关的信息,如信箱,文章等等,这样,这些数据库操作语句就构成一个事务!
  在 MySQL 中只有使用了 Innodb 数据库引擎的数据库或表才支持事务
  事务处理可以用来维护数据库的完整性,保证成批的 SQL 语句要么全部执行,要么全部不执行
  事务用来管理 insert,update,delete 语句
  禁止自动提交:
  mysql> show variables like "%autocommit%";
  +---------------+-------+
  | Variable_name | Value |
  +---------------+-------+
  | autocommit    | ON    |
  +---------------+-------+
  1 row in set (0.00 sec)
  mysql> SET AUTOCOMMIT=0;
  Query OK, 0 rows affected (0.00 sec)
  mysql> show variables like "%autocommit%";
  +---------------+-------+
  | Variable_name | Value |
  +---------------+-------+
  | autocommit    | OFF   |
  +---------------+-------+
  1 row in set (0.00 sec)
  当执行一堆insert语句后,需要commit才能显示数据,否则就没有insert成功
  import pymysql
  conn = pymysql.connect(host="192.168.1.48", port=3306, user="root", passwd="123456", db="TESTDB")
  cus = conn.cursor()
  sql_insert = "insert into stu(name,age) values('d',15);"
  cus.execute(sql_insert)
  cus.execute('commit')
  sql_select="select * from stu;"
  cus.execute(sql_select)
  #获取第3条数据
  #reject=cus.fetchmany(3)
  #获取第一条数据
  #reject=cus.fetchone()
  #查看所有数据
  reject=cus.fetchall()
  print(reject)
  #conn.close()
  实例:通过写一个类,这样好处就是数据库只调用一次
  import pymysql
  #定义一个类,构造函数写成字典形式
  class TestMysql(object):
  def init(self):
  self.dbConfig = {
  "host": "192.168.1.48",
  "port": 3306,
  "user": "root",
  "passwd": "123456",
  "db": "TESTDB"
  }
  #多值传入,*karges字典 args:元组
  conn = pymysql.connect(**self.dbConfig)
  self.cus = conn.cursor()
  

def select(self):  sql_select='select * from stu;'
  self.cus.execute(sql_select)
  reject=self.cus.fetchall()
  self.cus.close()
  print(reject)
  

  
def update(self):

  sql_update="update stu set name='e' where>  self.cus.execute(sql_update)
  self.cus.execute('commit;')
  

  if name == 'main':
  conn = TestMysql()
  conn.update()
  conn.select()


页: [1]
查看完整版本: mysql连接模块