Python数据库访问之SQLite3、Mysql
Python数据库访问之SQLite3、Mysql
现有的数据库管理系统有很多种,本文选择介绍两种DBMS:SQLite 3 和 Mysql。
SQLite 3
SQLite 3是Python 3预装的、相当完备、无需配置的基于SQL的数据库管理系统。要使用SQLite,只需导入sqlite3库,并使用Python标准化数据库API来编程,而不用处理其他工作,比如:安装数据库、配置等等。
示例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 sqlite3 db='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, os user = '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
Python数据库访问之SQLite3、Mysql的更多相关文章
- Python数据库访问公共组件及模拟Http请求
前言 最近一段时间除了忙于工作之外,在业余时,迷上了python,对它的跨平台深深的吸引.经过一段时间的自我学习,了解了其基本的语法,便开始自己着手摆弄起来.主要想把以前对接的接口再实现一次,以便于在 ...
- python 数据库操作 SQLite、MySQL 摘录
转自: http://www.cnblogs.com/windlaughing/p/3157531.html 不管使用什么后台数据库,代码所遵循的过程都是一样的:连接 -> 创建游标 -> ...
- python数据库访问
取得rs,使用,报错 sqlite3.Cursor' object has no attribute '__getitem__' 原因:使用时conn已经关闭了. 解决:用fetchall取出传递回来 ...
- python-整理--sqlite数据库访问
python 自带sqlite3数据库访问模块. sqlite3 以下写一个数据库访问类 ''' 2016年2月5日 描述: 操作sqlite数据库的封装 主要功能: 将sqlite数据库数据转为py ...
- python数据库(mysql)操作
一.软件环境 python环境默认安装了sqlite3,如果需要使用sqlite3我们直接可以在python代码模块的顶部使用import sqlite3来导入该模块.本篇文章我是记录了python操 ...
- python学习笔记之——操作mysql数据库
Python 标准数据库接口为 Python DB-API,Python DB-API为开发人员提供了数据库应用编程接口. Python 数据库接口支持非常多的数据库,你可以选择适合你项目的数据库: ...
- python中web应用与mysql数据库交互
7使用数据库 具体使用python的DB-API,这一章里介绍如何编写代码与MYSQL数据库技术交互,这里使用一个通用的数据库API,名为DB-API. 7.1基于数据库的web应用 之前我们把日志数 ...
- 我的基于asp.net mvc5 +mysql+dapper+easyui 的Web开发框架(1)数据库访问(0)
一.数据库访问 概述 1. 数据库使用mysql,orm采用dapper框架.dapper框架应用简单,只是需要自己手写sql语句,但是对于像我这样写了多年sql语句的人来说,这应该不算问题,个人还是 ...
- PHP MySql数据库访问
PHP MySql数据库访问 计应134 凌豪 1.MySql数据库的连接 要操作MySql数据库,首先必须与MySQl数据库建立连接,连接MySQL服务器的语句如下: <?php$link ...
随机推荐
- PhpStorm 超强语言模板的支持
原文:[转]PhpStorm 超强语言模板的支持 最近遇到一些PhpStorm编程的问题: 在使用Zen Coding插件时,PHPStorm不像Notepad++那样随便使用.PHPStorm只有在 ...
- IOS中 类扩展 xib
一.类扩展(class extension,匿名分类) .格式 @interface 类名 () { // 成员变量... } // 方法声明... @end .作用 > 写在.m文件中 > ...
- angularJS看MVVM
从angularJS看MVVM javascript厚积薄发走势异常迅猛,导致现在各种MV*框架百家争雄,MVVM从MVC演变而来,为javascript注入了全新的活力.我工作的业务不会涉及到a ...
- Springmvc 配置json输出的几种方式
Spring MVC 3.0 返回JSON数据的几种方法: 1. 直接 PrintWriter 输出 2. 使用 JSP 视图 3. 使用Spring内置的支持 // Spring MVC 配置 &l ...
- .NET开源项目 TOP 25
.NET开源项目 TOP 25 如果知道.NET项目在开源中国的git上所占的比重只有5%的话,为什么这个<2014年国人开发的最热门的开源软件TOP 100>榜中.NET项目那么少就是情 ...
- Kafka的常用管理命令
1. 查看kafka都有那些topic a. list/usr/hdp/current/kafka-broker/bin/kafka-topics.sh --list --zookeeper test ...
- .Net在线付款---Paydollar在线付款开发过程
原文:.Net在线付款---Paydollar在线付款开发过程 最近在做一个Web订单项目,项目有一个需求就是集成Paypal与Paydollar在线付款,一开始看到这个需求也是傻了眼,因为以前从来没 ...
- Python开发工具Wing IDE发布5.0.1版本
Wing IDE是一个跨平台的Python IDE,提供了一个专业代码编辑.自动编辑.自动完成.重构.强大的图形调试器.版本控制.单位测试.搜索及其他功能.目前已经成为最全面.最综合.最先进的智能化P ...
- leetcode[55] Merge Intervals
题目:给定一连串的区间,要求输出不重叠的区间. Given a collection of intervals, merge all overlapping intervals. For exampl ...
- [原] 细说 NUMA
详说 NUMA 标签(空格分隔): Cloud2.0 测试条件 两台机器: CPU: Intel(R) Xeon(R) CPU E5-2620 v3 @ 2.40GHz X 24 Intel(R) X ...