现有的数据库管理系统有很多种,本文选择介绍两种DBMS:SQLite 3 和 Mysql。

SQLite 3

SQLite 3是Python 3预装的、相当完备、无需配置的基于SQL的数据库管理系统。要使用SQLite,只需导入sqlite3库,并使用Python标准化数据库API来编程,而不用处理其他工作,比如:安装数据库、配置等等。

Python数据库API 提供了一种标准机制,可以针各种各样的数据库管理系统,包括SQLite。不管使用什么后台数据库,代码所遵循的过程都是一样的:连接 -> 创建游标 -> 交互(利用游标,使用SQL管理数据)->提交/回滚 ->关闭

示例1:

#导入你需要的库
import sqlite3
#1、建立与数据库的连接
connection=sqlite3.connect('test.db');
#2、创建数据游标
cursor=connection.cursor()
#3、执行一些SQL操作
cursor.execute("""select date('NOW')""")
print(cursor.fetchone())
#4、提交所做的修改,使修改永久保留
connection.commit()
#5、完成时关闭链接
connection.close()

输出:

('2013-06-26',)

示例2:

创建数据库 -> 插入数据 -> 查询

import sqlite3db='test.sqlite'    #数据库名
drop_table_sql="drop table if exists books;"
create_table_sql="""
create table books(id integer primary key autoincrement unique not null,name text not null,price integer,publish_date date not null
);
"""connection=sqlite3.connect(db)
cursor=connection.cursor()#创建数据库
cursor.execute(drop_table_sql)
cursor.execute(create_table_sql)#插入数据
insert_sql="insert into books (name,price,publish_date) values (?,?,?)"# ? 为占位符
cursor.execute(insert_sql,('java',123.23,'2012-12-03'))
cursor.execute(insert_sql,('C++',83.23,'2013-02-03'))
connection.commit()#查询
select_sql = "SELECT * FROM books"
cursor.execute(select_sql)
#返回一个list,list中的对象类型为tuple(元组)
data=cursor.fetchall()
for t in data:print(t)connection.close()

输出:

(1, 'java', 123.23, '2012-12-03')
(2, 'C++', 83.23, '2013-02-03')

Mysql

Mysql是非常流行的开源关系性数据库。

要使用Python访问Mysql,需要一个连接库,即对Python DB API的一个实现,相当于JAVA中的MySQL的JDBC Driver。其中比较著名就是MySQLdb(Django项目使用它),不过,目前MySQLdb并不支持python3.x。我们只能采用其他连接库,MySQL官方已经提供了MySQL连接器,而且已经有支持Python3.x的版本了。

MySQL Connector/Python enables Python programs to access MySQL databases, using an API that is compliant with the Python DB API version 2.0。
关于MySQL Connector/Python的各种介绍、安装、API等文档,请参考官网:http://dev.mysql.com/doc/connector-python/en/index.html

示例:

import mysql.connector
import sys, osuser = 'root'
pwd  = '123456'
host = '127.0.0.1'
db   = 'test'connection = mysql.connector.connect(user=user, password=pwd, host=host, database=db)
cursor = connection.cursor()#创建数据库表
drop_table_sql="drop table if exists person;"
create_table_sql = """
CREATE TABLE person(id int(10) AUTO_INCREMENT PRIMARY KEY,name varchar(20),age int(4)
)CHARACTER SET utf8;
"""
try:cursor.execute(drop_table_sql)cursor.execute(create_table_sql)
except mysql.connector.Error as err:print("create table 'mytable' failed.")print("Error: {}".format(err.msg))sys.exit()#插入数据
insert_sql = 'INSERT INTO person(name, age) VALUES (%s,%s)'
try:cursor.execute(insert_sql,('Jay', 22))cursor.execute(insert_sql,('Tony', 26))cursor.execute(insert_sql,('邵',24))
except mysql.connector.Error as err:print("insert table 'mytable' failed.")print("Error: {}".format(err.msg))sys.exit()#查询数据
select_sql = "SELECT * FROM person"
try:#cursor.execute() 返回 None; 执行SQL后的信息存储在cursor对象内。
    cursor.execute(select_sql)#获取一条记录,每条记录做为一个tuple(元组)返回data=cursor.fetchone()print(data)#获取2条记录,注意由于之前执行有了fetchone(),所以游标已经指到第二条记录了,也就是从第二条开始的2条记录data=cursor.fetchmany(2)print(data)cursor.execute(select_sql)#获取所有结果 data=cursor.fetchall()print(data)cursor.execute(select_sql)#获取所有结果for (id, name, age) in cursor:print("ID:{}  Name:{}  Age:{}".format(id, name, age))except mysql.connector.Error as err:print("query table 'mytable' failed.")print("Error: {}".format(err.msg))sys.exit()connection.commit()
cursor.close()
connection.close()

输出:

(1, 'Jay', 22)
[(2, 'Tony', 26), (3, '邵', 24)]
[(1, 'Jay', 22), (2, 'Tony', 26), (3, '邵', 24)]
ID:1 Name:Jay Age:22
ID:2 Name:Tony Age:26
ID:3 Name:邵 Age:24

转载于:https://www.cnblogs.com/windlaughing/p/3157531.html

Python数据库访问之SQLite3、Mysql相关推荐

  1. Python数据库访问公共组件及模拟Http请求

    前言 最近一段时间除了忙于工作之外,在业余时,迷上了python,对它的跨平台深深的吸引.经过一段时间的自我学习,了解了其基本的语法,便开始自己着手摆弄起来.主要想把以前对接的接口再实现一次,以便于在 ...

  2. python数据库操作sqlite_Python操作mysql和sqlite

    python中使用模块包装了mysql和sqlite数据库的操作,实现方法基本相同,实现步骤为: 1.创建connection对象 2.创建cursor(游标)对象 3.通过cursor(游标)对象操 ...

  3. python数据库实例_Python操作MySQL数据库9个实用实例

    用python连接mysql的时候,需要用的安装版本,源码版本容易有错误提示.下边是打包了32与64版本. MySQL-python-1.2.3.win32-py2.7.exe MySQL-pytho ...

  4. python数据库教程_Python连接mysql数据库及简单增删改查操作示例代码

    1.安装pymysql 进入cmd,输入 pip install pymysql: 2.数据库建表 在数据库中,建立一个简单的表,如图: 3.简单操作 3.1查询操作 #coding=utf-8 #连 ...

  5. php数据库访问辅助类,php+MySQL实战案例【二】php数据库辅助类

    前言 在学习php的时候需要经常对mysql数据库进行增删改查操作,为了减少冗余代码,我们把数据操作的方法封装成一个php类.在不同的业务场景需要用到数据库表的数据操作时,只需在php文件开头引入我们 ...

  6. python数据库查询系统_Python MySQL 查询数据(select from)

    1.从表中查询数据(Select From) 要从MySQL中的表中进行选择,请使用"SELECT"语句: 例如: 从"customers"表中选择所有记录,并 ...

  7. PYTHON 数据库 之 sqlite3

    零 SQLite数据库的创建和使用 一.SQLite数据库的创建 1>. 安装SQLite数据库(在Windows上安装SQLite) SQLite以其零配置而闻名,所以不需要复杂的设置或管理. ...

  8. python - 啃书 第十一章 数据库访问

    概述 与使用文件存储数据相比,使用数据库存储和管理数据更容易实现数据共享.降低数据冗余.保持数据独立性,以及增强数据的一致性和可维护性. 现在数据库技术已经广泛应用于电子邮件.金融业.网站.办公自动化 ...

  9. python怎么连接mysql数据库_python如何连接mysql数据库

    Python 数据库接口支持非常多的数据库,你可以选择适合你项目的数据库:GadFly mSQL MySQL PostgreSQL Microsoft SQL Server 2000 Informix ...

最新文章

  1. php 获取signature,PHP开发微信无法获取到signature,timestamp,nonce
  2. php加密解密p源码可以吗,论 如何做好PHP的加密解密呐,源码教学
  3. MVC设计模式深入理解
  4. 外挂学习之路(4)--- 大海捞针找call call const法
  5. 火车头如何才能设置发布的时候,如果是有html代码就直接的转换掉,互联网上笑话抽取及排重---火车头采集器的使用和MD5算法的应用...
  6. 自定义曲线_Qt编写的项目作品17-自定义曲线图柱状图
  7. 堆排序建堆复杂度在特殊情况下的推导
  8. Activator.CreateInstance 方法 (Type) 的用法
  9. mysql select trim_mysql trim函数用法举例
  10. c语言鼠标游戏代码,自己用C写的一个简单的打地鼠游戏代码出了个问题(鼠标和循环不能...
  11. 快解析:NAT移动版结合管家婆使用操作
  12. Apache 安装虚拟主机
  13. Python:实现euclidean distance欧式距离算法(附完整源码)
  14. 初学者好 |如何从头开始创建一个图像识别的AI应用[ctrl:c+v,你就完成了]
  15. ubuntu桌面出现问题,重启x桌面方法
  16. 网站有上传后门木马的漏洞怎么解决
  17. 服务器跑压力测试死机,我用鲁大师温度压力测试怎么死机了啊
  18. java创建文件夹(Java创建文件夹失败重新创建)
  19. PYTHON对接国际验证码接口
  20. Exception in thread main java.lang.RuntimeException: java.net.ConnectException错误问题

热门文章

  1. 坐标系转换工具_借助工具实现不同坐标系之间的转换
  2. python学习-syspath、系统内置模块
  3. 为什么使用NoSql及NoSql的优点
  4. 2021甘肃高考成绩查询时间几点,2021年甘肃高考成绩什么时候出来,今天几点钟出成绩可以查询...
  5. 得到按钮句柄后如何点集_RepPoint:可形变卷积生成的目标轮廓点集
  6. c语言计算机二级改错题类型,C语言计算机二级改错题
  7. 19年三本毕业,做了三年的嵌入式软件。
  8. 参加智能车大赛还是电赛?在做电磁炮中我找到了答案
  9. Linux系统如何测试电脑性能,如何使用DD命令测试Linux磁盘的性能?
  10. 商业逻辑12讲之战略管理的逻辑