以Mysql为例:

  1. 要操作关系数据库,首先需要连接到数据库,一个数据库连接称为Connection
  2. 连接到数据库后,需要打开游标,称之为Cursor,通过Cursor执行SQL语句,然后,获得执行结果。

1。安装驱动

  1. $ pip install mysql-connector-python --allow-external mysql-connector-python

或者尝试:

  1. $ pip install mysql-connector

安装过程如下:

2.使用代码连接

  

  1. # 导入驱动
  2. import mysql.connector
  3.  
  4. # 连接信息
  5. conn = mysql.connector.connect(user="root", password="root", database="sakila")
  6. # 获取游标
  7. cursor = conn.cursor()
  8. # 运行查询
  9. cursor.execute("SELECT * FROM actor WHERE first_name = %s", ("NICK",))
  10. # 获取结果
  11. values = cursor.fetchall()
  12. print(values)
  13. # 关闭连接
  14. cursor.close()
  15. conn.close()

  注意占位符的使用

Python3的PyMySQL参考:https://www.w3cschool.cn/python3/python3-mysql.html

3.实战

  py连接Mysql导出表结构:

    注意使用豆瓣的镜像快一点:(不然可能会超时失败)

  1. pip install PyMySQL -i http://pypi.douban.com/simple --trusted-host pypi.douban.com
  1. # coding=utf-8
  2. import pymysql
  3. import xlwt
  4. import configparser
  5.  
  6. # 获取数据库连接
  7. def conn(sql, hostname, username, password, database):
  8. # 打开数据库连接
  9. db = pymysql.connect(hostname, username, password, database, charset='utf8')
  10.  
  11. # 使用 cursor() 方法创建一个游标对象 cursor
  12. cursor = db.cursor()
  13.  
  14. # 使用 execute() 方法执行 SQL 查询
  15. cursor.execute(sql)
  16.  
  17. # 使用 fetchall() 方法获取所有数据.
  18. results = cursor.fetchall()
  19.  
  20. # 关闭数据库连接
  21. db.close()
  22. return results
  23.  
  24. def write_excel(f, data, row):
  25. # 创建excel对象
  26. book = xlwt.Workbook()
  27. # 添加一个表
  28. sheet = book.add_sheet('表结构清单')
  29. # 行计数
  30. c = 0
  31. # 取出data中的每一个元组存到表格的每一行
  32. for d in data:
  33. # 将每一个元组中的每一个单元存到每一列
  34. for index in range(len(d)):
  35. # 写表头
  36. if c == 0:
  37. sheet.write(c, index, row[index])
  38. continue
  39. sheet.write(c, index, d[index])
  40. c += 1
  41. # 保存excel
  42. book.save(f)
  43.  
  44. if __name__ == "__main__":
  45. config = configparser.ConfigParser()
  46. config.read("config.ini")
  47. host = config.get("mysql", "host")
  48. user = config.get("mysql", "user")
  49. pwd = config.get("mysql", "password")
  50. db = config.get("mysql", "database")
  51. file = config.get("file", "file_name")
  52.  
  53. s = """
  54. SELECT
  55. a.Table_name AS "表名",
  56. a.Table_comment AS "表注释",
  57. b.Ordinal_position AS "序号",
  58. b.Column_name AS "列名",
  59. b.Data_type AS "列类型",
  60. b.Column_comment AS "列注释"
  61. FROM
  62. information_schema.TABLES a
  63. JOIN information_schema.COLUMNS b ON a.Table_name = b.Table_name
  64. WHERE
  65. a.TABLE_SCHEMA = '{}'
  66. AND a.Table_type = 'BASE TABLE'
  67. """.format(db)
  68. row_name = ("表名", "表注释", "序号", "列名", "列类型", "列注释")
  69. # 获取表结构数据
  70. table_schema = conn(s, host, user, pwd, db)
  71. write_excel(file, table_schema, row_name)
  72. print("success!")

以下是配置文件:

  

  1. [mysql]
  2. host = localhost
  3. user = root
  4. password = root
  5. database = badblog
  6.  
  7. [file]
  8. file_name = schema.xls

Python3入门(十三)——连接数据库的更多相关文章

  1. 【转】Python3 (入门6) 库的打包与安装

    Python3 (入门6) 库的打包与安装 本文由 Luzhuo 编写,转发请保留该信息. 原文: http://blog.csdn.net/Rozol/article/details/6940288 ...

  2. Python3入门机器学习经典算法与应用

    <Python3入门机器学习经典算法与应用> 章节第1章 欢迎来到 Python3 玩转机器学习1-1 什么是机器学习1-2 课程涵盖的内容和理念1-3 课程所使用的主要技术栈第2章 机器 ...

  3. python3入门之类

    在面向对象的语言中,类是最重要的一环,python自然拥有类这个机制.python的类机制,与C++,java的区别不是很大,类的大多数的重要特性都被沿用了,一样可以多态,抽象,封装: python3 ...

  4. python3入门之集合set

    之前介绍python的数据结构时,没有介绍set(集合)现在在这里稍微介绍下: set原理 Python 还 包 含 了 一 个 数 据 类 型-- set ( 集 合 ) . 集 合 是 一 个 无 ...

  5. python3入门之函数

    相信大家学习过其他语言,懂得函数的作用.简单的说函数最好的作用就是可以使程序变得懒惰.python作为后起之秀,当然也会拥有函数这个有用的东西: 创建函数 使用def语句即可创建函数,如创建一个用来生 ...

  6. python3入门之赋值语句介绍

    获得更多资料欢迎进入我的网站或者 csdn或者博客园 本节主要介绍赋值语句,以及几种特殊的赋值.下面附有之前的文章: python3入门之print,import,input介绍 python入门之字 ...

  7. python3入门之print,import,input介绍

    本节主要介绍print,import和input,t函数,包括他们在python2.7和python3 的区别以及用法.下面附有之前的文章: ​ python3的print函数的变化 python3之 ...

  8. python3入门之字典

    获得更多资料欢迎进入我的网站或者 csdn或者博客园 本节主要介绍字典,字典也成映射,时python中唯一内建的映射类型.更多详细请点击readmore.下面附有之前的文章: python入门之字符串 ...

  9. python3入门之字符串

    获得更多资料欢迎进入我的网站或者 csdn或者博客园 经过前面的介绍相信大家也对python有了一个初步的了解:本节主要介绍字符串,不管学习什么编语言字符串一定在其中扮演着重要的地位.本节主要讲解,字 ...

  10. python3入门之列表和元组

    获得更多资料欢迎进入我的网站或者 csdn或者博客园 前面一张主要学习了Python的安装,以及第一个程序helloword的编写,以及简单的输入和输出函数,这章主要介绍序列,列表,元组 序列  这章 ...

随机推荐

  1. 题解 洛谷P3745 【[六省联考2017]期末考试】

    这题有点绕,我写了\(2h\)终于搞明白了. 主要思路:枚举最晚公布成绩的时间\(maxt\),然后将所有公布时间大于\(maxt\)的课程都严格降为\(maxt\)即可. 在此之前,还要搞清楚一个概 ...

  2. 三.protobuf3标量值类型

    Protobuf3 标量值类型 标量消息字段可以具有以下类型之一——该表显示了.proto文件中指定的类型,以及自动生成的类中的相应类型: .proto类型 说明 C++ 类型 Java 类型 Pyt ...

  3. iframe使用总结(实战)

    说在前面的话,iframe是可以做很多事情的.例如:a>通过iframe实现跨域;b>使用iframe解决IE6下select遮挡不住的问题c>通过iframe解决Ajax的前进后退 ...

  4. drf框架 - 序列化组件 | ModelSerializer (查,增,删,改)

    ModelSerializer 序列化准备: 配置 settings.py # 注册rest_framework框架 INSTALLED_APPS = [ ... 'rest_framework' ] ...

  5. ubuntu下subversion1.7的安装

    环境: ubuntu11.10 subversion1.7 1.用synaptic安装的svn都是1.6版,根本于现在的主流svn服务器无法通信.需要升级为1.7. 1.1 apt-add-repos ...

  6. 【贪心】Moving Tables POJ 1083

    题目链接:http://poj.org/problem?id=1083 题目大意:走廊上的房间如下图设置,现在有n个移动桌子的任务,把桌子从xi移动到yi(整个过程中会占用xi到yi房间之间的走廊), ...

  7. 判断指定对象是否进入浏览器可视窗口,true 进入,false 没进入

    //判断指定对象是否进入浏览器可视窗口,true 进入,false 没进入 var $win = $(window);//jQuery 的 window 对象 即:文档对象 function isVi ...

  8. yaml文件

    apiVersion: apps/v1beta1 kind: Deployment metadata: annotations: deployment.kubernetes.io/revision: ...

  9. postgresql分布式集群之citus简介(转载)

    一.Citus是什么 citus是PG的一个sharding插件,可以把PG变成一个分布式数据库.目前在苏宁有大量的生产应用跑在citus+pg的环境中.大家可以看it大咖视频. citus是一款基于 ...

  10. 2019.11.15 JQ图片轮播

    <div class="three"> <div class="bjtp"> <img class="bjpic b1& ...