以Mysql为例:

要操作关系数据库,首先需要连接到数据库,一个数据库连接称为Connection;

连接到数据库后,需要打开游标,称之为Cursor,通过Cursor执行SQL语句,然后,获得执行结果。

1。安装驱动

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

或者尝试:

$ pip install mysql-connector

安装过程如下:

2.使用代码连接

  

# 导入驱动
import mysql.connector # 连接信息
conn = mysql.connector.connect(user="root", password="root", database="sakila")
# 获取游标
cursor = conn.cursor()
# 运行查询
cursor.execute("SELECT * FROM actor WHERE first_name = %s", ("NICK",))
# 获取结果
values = cursor.fetchall()
print(values)
# 关闭连接
cursor.close()
conn.close()

  注意占位符的使用

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

3.实战

  py连接Mysql导出表结构:

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

pip install PyMySQL -i http://pypi.douban.com/simple --trusted-host pypi.douban.com
# coding=utf-8
import pymysql
import xlwt
import configparser # 获取数据库连接
def conn(sql, hostname, username, password, database):
# 打开数据库连接
db = pymysql.connect(hostname, username, password, database, charset='utf8') # 使用 cursor() 方法创建一个游标对象 cursor
cursor = db.cursor() # 使用 execute() 方法执行 SQL 查询
cursor.execute(sql) # 使用 fetchall() 方法获取所有数据.
results = cursor.fetchall() # 关闭数据库连接
db.close()
return results def write_excel(f, data, row):
# 创建excel对象
book = xlwt.Workbook()
# 添加一个表
sheet = book.add_sheet('表结构清单')
# 行计数
c = 0
# 取出data中的每一个元组存到表格的每一行
for d in data:
# 将每一个元组中的每一个单元存到每一列
for index in range(len(d)):
# 写表头
if c == 0:
sheet.write(c, index, row[index])
continue
sheet.write(c, index, d[index])
c += 1
# 保存excel
book.save(f) if __name__ == "__main__":
config = configparser.ConfigParser()
config.read("config.ini")
host = config.get("mysql", "host")
user = config.get("mysql", "user")
pwd = config.get("mysql", "password")
db = config.get("mysql", "database")
file = config.get("file", "file_name") s = """
SELECT
a.Table_name AS "表名",
a.Table_comment AS "表注释",
b.Ordinal_position AS "序号",
b.Column_name AS "列名",
b.Data_type AS "列类型",
b.Column_comment AS "列注释"
FROM
information_schema.TABLES a
JOIN information_schema.COLUMNS b ON a.Table_name = b.Table_name
WHERE
a.TABLE_SCHEMA = '{}'
AND a.Table_type = 'BASE TABLE'
""".format(db)
row_name = ("表名", "表注释", "序号", "列名", "列类型", "列注释")
# 获取表结构数据
table_schema = conn(s, host, user, pwd, db)
write_excel(file, table_schema, row_name)
print("success!")

以下是配置文件:

  

[mysql]
host = localhost
user = root
password = root
database = badblog [file]
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. 07 c++中的内联函数inline

    文章链接: 问题描述:类中成员函数缺省默认是内联的,如果在类定义时就在类内给出函数定义,那当然最好.如果在类中未给出成员函数定义,而又想内联该函数的话,那在类外要加上 inline,否则就认为不是内联 ...

  2. C#:抽象类PK密封类

    最近在看关于C#的书,看到了抽象类和抽象方法,另外还看到了密封类和密封方法,那么二者有什么联系又有什么区别,我把最近的收获分享给大家! 1.抽象类和抽象方法: ·C#使用abstract关键字,将类或 ...

  3. java常用关键字(static、final、this、super)

    this关键字 this关键字的作用有 1.调用本类的成员变量 public class Soft{ private int a; public Soft(int a){ this.a=a; } } ...

  4. Vue 实例成员

    Vue 一. 什么是Vue 可以独立完成前后端分离时 Web项目的JavaScript框架 二.为什么学Vue 前端三大主流框架:Angular React Vue Vue结合了其他框架优点.轻量级. ...

  5. 分段三次Hermite插值及其与三次样条的比较

    分段三次 Hermite 插值多项式 (PCHIP) 语法 p = pchip(x,y,xq) pp = pchip(x,y)   说明 p = pchip(x,y,xq) 返回与 xq 中的查询点对 ...

  6. commons-dbutils 字段名称转换,支持驼峰字段名

    你能遇到的问题,只要是普遍存在的,大家都会遇到,那么,就一定有现成的解决方案. 在阅读 commons-dbutils 的文档时, BeanHandler 的第二个参数可以达到这个目的.只需传入一个实 ...

  7. 04_(终结版)通过App实现对数据库的增删改

    设计思路:用户注册登录:用户注册或登录(login数据表),成功后进入增删改查(words数据表)注意:只有登录验证成功后才可以增删改查,否则提示未登录! 增:用户在App上add(单词.词义.音标) ...

  8. 转发标签forward

    当执行到<jsp:forward page="相对路径"></jsp:forward>后,会立即结束当前页面的显示,跳转到另一个页面(JSP.HTML.Se ...

  9. Codevs 3160 最长公共子串(后缀数组)

    3160 最长公共子串 时间限制: 2 s 空间限制: 128000 KB 题目等级 : 大师 Master 题目描述 Description 给出两个由小写字母组成的字符串,求它们的最长公共子串的长 ...

  10. UOJ188. 【UR #13】Sanrd [min_25筛]

    传送门 思路 也可以算是一个板题了吧qwq 考虑min_25筛最后递归(也就是DP)的过程,要枚举当前最小的质因子是多少. 那么可以分类讨论,考虑现在这个质因子是否就是次大质因子. 如果不是,那么就是 ...