转自: http://www.cnblogs.com/windlaughing/p/3157531.html

不管使用什么后台数据库,代码所遵循的过程都是一样的:连接 -> 创建游标 -> 交互(利用游标,使用SQL管理数据)->提交/回滚 ->关闭

SQLite 3

#导入你需要的库
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

要使用Python访问Mysql,需要一个连接库,即对Python DB API的一个实现,其中比较著名就是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 = ''
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 数据库操作 SQLite、MySQL 摘录的更多相关文章

  1. python之数据库操作(sqlite)

    python之数据库操作(sqlite) 不像常见的客户端/服务器结构范例,SQLite引擎不是个程序与之通信的独立进程,而是连接到程序中成为它的一个主要部分.所以主要的通信协议是在编程语言内的直接A ...

  2. python数据库操作 - MySQL入门【转】

    python数据库操作 - MySQL入门 python学院 2017-02-05 16:22 PyMySQL是Python中操作MySQL的模块,和之前使用的MySQLdb模块基本功能一致,PyMy ...

  3. python/数据库操作补充—模板—Session

    python/数据库操作补充—模板—Session 一.创建一个app目录 在models.py只能类进行进行创建表 class Foo: xx= 字段(数据库数据类型) 字段类型 字符串 Email ...

  4. Python操作SQLite/MySQL/LMDB

    1.概述 1.1前言 最近在存储字模图像集的时候,需要学习LMDB,趁此机会复习了SQLite和MySQL的使用,一起整理在此. 1.2环境 使用win7,Python 3.5.2. 2.SQLite ...

  5. python数据库操作常用功能使用详解(创建表/插入数据/获取数据)

    实例1.取得MYSQL版本 复制代码 代码如下: # -*- coding: UTF-8 -*-#安装MYSQL DB for pythonimport MySQLdb as mdbcon = Non ...

  6. python数据库操作之pymysql模块和sqlalchemy模块(项目必备)

    pymysql pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb几乎相同. 1.下载安装 pip3 install pymysql 2.操作数据库 (1).执行sql #! ...

  7. iOS学习笔记(十五)——数据库操作(SQLite)

    SQLite (http://www.sqlite.org/docs.html) 是一个轻量级的关系数据库.SQLite最初的设计目标是用于嵌入式系统,它占用资源非常少,在嵌入式设备中,只需要几百K的 ...

  8. JSP中的数据库操作,MySQL基础操作(一)

    一.JDBC JDBC(java data base concectivity),是一种用于执行SQL语句的java API,可以为多种关系库提供统一访问. 通常使用JDBC完成以下操作: 1)同数据 ...

  9. 【转】iOS学习笔记(十五)——数据库操作(SQLite)

    SQLite (http://www.sqlite.org/docs.html) 是一个轻量级的关系数据库.SQLite最初的设计目标是用于嵌入式系统,它占用资源非常少,在嵌入式设备中,只需要几百K的 ...

随机推荐

  1. 创建、配置Servlet

    1.创建Servlet 2.选择继承的类及需要覆盖的方法 3.Servlet结构 package com.sysker.servlet; import java.io.IOException; imp ...

  2. 谈谈Vue/React中的虚拟DOM(vDOM)与Key值

    谈谈Vue/React中的虚拟DOM(vDOM)与Key值 一.DocumentFragment 在了解虚拟DOM前,先来了解DOM的一个对象属性--DocumentFragment. 在一次操作中, ...

  3. redhat Enterprise Linux 6 VNC安装

    redhat Enterprise Linux 6.2 beta VNC安装经验  VNC(Virtual Network Computing)是可操控远程的计算机的软件,任何人都可免费取得该软件,其 ...

  4. iOS ksyhttpcache音视频缓存

    pod 'ksyhttpcache' 桥接文件 引入 #import <KSYHTTPCache/KSYHTTPProxyService.h> 带appdelegate里初始化 KSYHT ...

  5. java 集合解析

    Set集合,放的元素不能重复,请问它的判断重不重复是怎么实现的? 比如说:ArrayList 和 Vector 是用数组的方式存储的Set里的 hashSet 和TreeSet是用什么方式存储的?怎么 ...

  6. 剑指offer刷题记录

    目录 二维数组中的查找 替换空格 从尾到头打印链表 反转链表 重建二叉树 用两个栈实现队列 旋转数组的最小数字 斐波拉切数列 跳台阶 变态跳台阶 矩形覆盖 二进制中1的个数 数值的整次方 链表中倒数第 ...

  7. angular双向绑定与单向绑定的写法区别

    [ngModel]="manualCode" (ngModelChange)="manualCode=$event;" 等价于下面这样的写法: [(ngMode ...

  8. BZOJ 4260 Codechef REBXOR 01trie

    好题...开阔思路 把每个前缀异或和依次插入$01trie$,插之前找一个最优的(就是从高位向低位贪心,尽量走相反方向)看看能不能更新答案,此时相当于找到了区间右端点不超过某个点$r$的最大或和$f[ ...

  9. spring不同环境下用不同的配置文件

    @Configuration @PropertySource("xx-${spring.profiles.active}.properties") public class Top ...

  10. myeclipse-9.0安装svn客户端插件

    SVN插件配置到MyEclipse中的步骤 听语音 | 浏览:20471 | 更新:2015-01-09 10:26 | 标签:myeclipse 1 2 3 4 5 6 7 分步阅读 MyEclip ...