加入收藏 | 设为首页 | 会员中心 | 我要投稿 PHP编程网 - 钦州站长网 (https://www.0777zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

Python操作Mysql数据库入门——查看和增加记录

发布时间:2022-10-31 12:40:41 所属栏目:MySql教程 来源:
导读:  前言

  最近学了一下sql,因为做数据分析不会sql真不行。

  平时学的都是Python,所以如果要用pandas做数据分析,数据除了导入excel和csv文件,

  应该还要会从数据库中导入数据到Python中,于
  前言
 
  最近学了一下sql,因为做数据分析不会sql真不行。
 
  平时学的都是Python,所以如果要用pandas做数据分析,数据除了导入excel和csv文件,
 
  应该还要会从数据库中导入数据到Python中,于是我进行了以下的学习和探索。
 
  环境
 
  Python 3.X
 
  IDE : juyter notebook
 
  mysql
 
  安装必要的模块
 
  首先安装好
 
  进入:
 
  ~gohlke/pythonlibs/#mysqlclient
 
  数据库查询操作_python文件操作 库_ps滤镜库无法完成操作
 
  找到适合自己的版本
 
  下载到本地(我的下载到e:盘根目录)
 
  然后打开cmd如下图安装
 
  数据库查询操作_python文件操作 库_ps滤镜库无法完成操作
 
  这里推荐本地安装
 
  使用Python连接数据库
 
  import MySQLdb
  如果导入模块没报错,恭喜你,安装模块成功了!
 
  conn = MySQLdb.connect(
   ? ?host = '127.0.0.1',#本地地址
   ? ?user = 'root',#一般默认用户名
   ? ?passwd = '********',#本地数据库登录密码
   ? ?db = 'test',#数据库名称
   ? ?port = 3306,#安装mysql默认的端口号
   ? ?charset = 'utf8'#设置数据库统一编码
  )
 
  通过connect方法连接本地mysql数据库,这里要注意你要修改的或许是登录密码和数据库名称
 
  创建游标
 
  首先,我们要创建一个游标
 
  cursor = conn.cursor()
  什么是游标呢?
 
  游标就相当于一个缓冲区,存放暂时的结果(这是我的理解)
 
  就像去超市买买买,你可能要推一个手推车,这里的手推车就像游标,推着手推车去对应的货架完成挑选操作,而手推车最终会在出超市时候清空。
 
  观察数据库
 
  数据库查询操作_python文件操作 库_ps滤镜库无法完成操作
 
  我本地的数据库test中有个tdb_goods的表
 
  表的内容如上图所示
 
  有商品的id,名称,种类id,品牌id,是否在售和是否下架几个字段
 
  一共有23条记录
 
  获取数据
 
  我们使用select语句可以获取数据
 
  cursor.execute('SELECT * FROM `tdb_goods`;')
  data = cursor.fetchone()#取一条数据
  print(data)
  首先我们用游标的execute方法执行一句sql语句获取tdb_goods中的所有数据
 
  然后使用游标的fetchone方法取出其中一条记录并且展现出来
 
  ps滤镜库无法完成操作_数据库查询操作_python文件操作 库
 
  如上图,我们取出的数据是元组形式
 
  当然,我们应该养成打开后关闭的好习惯,所以,在操作结束,应该断开与数据库的连接
 
  conn.close()
  异常处理
 
  当我们在操作时,希望和在mysql数据库中一样,异常时会提示异常信息
 
  那么我们就要加入异常处理模块
 
  try:
   ? ?conn = MySQLdb.connect(
   ? ? ? ?host = '127.0.0.2222',
   ? ? ? ?user = 'root',
   ? ? ? ?passwd = '********',
   ? ? ? ?db = 'test',
   ? ? ? ?port = 3306,
   ? ? ? ?charset = 'utf8'
   ? ?)
  except MySQLdb.Error as e:
   ? ?print('Error:%s' % e)
 
  ps滤镜库无法完成操作_python文件操作 库_数据库查询操作
 
  这里异常时,就将异常的信息告知我们了
 
  我们将以上代码整理一下:
 
  import MySQLdb
 
  try:
   ? ?conn = MySQLdb.connect(
   ? ? ? ?host = '127.0.0.1',
   ? ? ? ?user = 'root',
   ? ? ? ?passwd = '********',
   ? ? ? ?db = 'test',
   ? ? ? ?port = 3306,
   ? ? ? ?charset = 'utf8'
   ? ?)
   ? ?
   ? ?cursor = conn.cursor()
   ? ?cursor.execute('SELECT * FROM `tdb_goods`;')
   ? ?data = cursor.fetchone()
   ? ?print(data)
   ? ?
   ? ?conn.close()
 
  except MySQLdb.Error as e:
   ? ?print('Error:%s' % e)
  当我们将fetchone改成fetchall时候,就是取出所有信息了
 
  python文件操作 库_ps滤镜库无法完成操作_数据库查询操作
 
  使用面向对象编程
 
  如果你熟悉面向对象编程或者看过我写的面向对象编程入门系列(小姐姐系列)
 
  传送门:
 
  如果你还没接触过面向对象编程,看完以上5篇至少对接下来的内容理解上不存在问题
 
  import MySQLdb
 
  class Mysql(object):
   ? ?
   ? ?def __init__(self):
   ? ? ? ?self.connect()
   ? ?
   ? ?def connect(self):
 
   ? ? ? ?try:
   ? ? ? ? ? ?self.conn = MySQLdb.connect(
   ? ? ? ? ? ? ? ?host = '127.0.0.1',
   ? ? ? ? ? ? ? ?user = 'root',
   ? ? ? ? ? ? ? ?passwd = '********',
   ? ? ? ? ? ? ? ?db = 'test',
   ? ? ? ? ? ? ? ?port = 3306,
   ? ? ? ? ? ? ? ?charset = 'utf8'
   ? ? ? ? ? ?)
   ? ? ? ? ? ?
   ? ? ? ?except MySQLdb.Error as e:
   ? ? ? ? ? ?print('Error:%s' % e)
 
   ? ?def close_conn(self):
   ? ? ? ?try:
   ? ? ? ? ? ?if self.conn:
   ? ? ? ? ? ? ? ?self.conn.close()
   ? ? ? ?except MySQLdb.Error as e:
   ? ? ? ? ? ?print('Error:%s' % e) ? ?
   ? ? ? ?
   ? ?def get_a(self):
   ?
   ? ? ? ?sql = 'select * from `tdb_goods` where `cate_id` = %s;'
   ? ? ? ?cursor = self.conn.cursor()
   ? ? ? ?cursor.execute(sql,('1',))
   ? ? ? ?data = cursor.fetchone()
   ? ? ? ?print(data)
   ? ? ? ?cursor.close()
   ? ? ? ?self.close_conn()
   ? ? ? ?
  def main():
   ? ?object = Mysql()
   ? ?object.get_a()
   ? ?
  if __name__ == '__main__':
   ? ?main()
  注:这里定义了一个类叫Mysql,然后用类创建一个对象名为object,在创建对象的时候,类的初始化时调用连接数据库函数
 
  创建了一个叫object的对象,使用对象的get_a方法从数据库tdb_goods中选出cate_id=1的一条记录,在get_a函数最后位置断开数据库连接
 
  结果如下:
 
  插入记录到数据库
 
  import MySQLdb
 
  class Mysql(object):
   ? ?
   ? ?def __init__(self):
   ? ? ? ?self.connect()
   ? ?
   ? ?def connect(self):
 
   ? ? ? ?try:
   ? ? ? ? ? ?self.conn = MySQLdb.connect(
   ? ? ? ? ? ? ? ?host = '127.0.0.1',
   ? ? ? ? ? ? ? ?user = 'root',
   ? ? ? ? ? ? ? ?passwd = '********',
   ? ? ? ? ? ? ? ?db = 'test',
   ? ? ? ? ? ? ? ?port = 3306,
   ? ? ? ? ? ? ? ?charset = 'utf8'
   ? ? ? ? ? ?)
   ? ? ? ? ? ?
   ? ? ? ?except MySQLdb.Error as e:
   ? ? ? ? ? ?print('Error:%s' % e)
 
   ? ?def close_conn(self):
   ? ? ? ?try:
   ? ? ? ? ? ?if self.conn:
   ? ? ? ? ? ? ? ?self.conn.close()
   ? ? ? ?except MySQLdb.Error as e:
   ? ? ? ? ? ?print('Error:%s' % e) ? ?
   ? ? ? ?
   ? ?def get_a(self):
   ?
   ? ? ? ?sql = 'select * from `tdb_goods` where `cate_id` = %s;'
   ? ? ? ?cursor = self.conn.cursor()
   ? ? ? ?cursor.execute(sql,('1',))
   ? ? ? ?data = cursor.fetchone()
   ? ? ? ?print(data)
   ? ? ? ?cursor.close()
   ? ? ? ?self.close_conn()
   ? ?
   ? ?def add_a(self):
   ? ? ? ?sql = "insert into `tdb_goods`(`goods_name`,`cate_id`,`brand_id`,`goods_price`,`is_show`,`is_saleoff`) value (%s,%s,%s,%s,%s,%s);"
   ? ? ? ?cursor = self.conn.cursor()
   ? ? ? ?cursor.execute(sql,('伟哥牌notebook','8','1','66666','1','0'))
   ? ? ? ?cursor.close()
   ? ? ? ?self.close_conn()
   ? ? ? ?
  def main():
   ? ?object = Mysql()
   ? ?object.add_a()
   ? ?
  if __name__ == '__main__':
   ? ?main()
  注:这里,将一条记录插入了数据库数据库查询操作,但是当我执行完这条语句(没报错)
 
  刷新数据库并没有新增一条记录
 
  划重点:在这里,有一个self.conn.commit(),这个叫提交,如果不写这句,就无法将所做修改保存的数据库中
 
  加上这个之后(加在以下两句之间):
 
  可以看到,数据成功写入数据库了~
 
  如果运行代码报错,很可能是你的数据库名和数据库登录密码没有修改~
 
  文中如有错误和叙述不妥之处,望指正。
 

(编辑:PHP编程网 - 钦州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!