转自: 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. Unity3D -- shader语法内置函数

    该篇是Unity Shader中HLSL的内置函数,主要是一些数学方面的计算函数.在写Shader的时候可以直接使用. abs //计算输入值的绝对值. acos //返回输入值反余弦值. all / ...

  2. 洛谷P1282 多米诺骨牌

    P1282 多米诺骨牌 题目描述 多米诺骨牌有上下2个方块组成,每个方块中有1~6个点.现有排成行的 上方块中点数之和记为S1,下方块中点数之和记为S2,它们的差为|S1-S2|.例如在图8-1中,S ...

  3. 【转载】C#中可使用Unity容器实现属性注入

    简介 Unity :Unity是微软团队开发的一个轻量级,可扩展的依赖注入容器,为松散耦合应用程序提供了很好的解决方案,支持构造器注入,属性注入,方法注入. 控制反转:(Inversion of Co ...

  4. this android sdk requires android developer toolkit version

    this android sdk requires android developer toolkit version 10.0.0 or above. current version is 8.0. ...

  5. Jmeter用BeanShell Sampler调用java写的jar包进行MD5加密

    [前言] 在工作中,有时候我们请求的参数可能需要加密,比如登录接口中的密码做了加密操作,今天我就给大家介绍一种方法:Jmeter用BeanShell Sampler调用java写的jar包进行MD5加 ...

  6. EOS 智能合约编写(一)

    本文编写了一个简单的EOS智能合约,实现用户管理和资产管理,包括存钱,取钱,转帐的功能,旨在学习如何编写自己的EOS合约功能. 系统:Ubuntu      EOS版本:v1.1.1 一.智能合约代码 ...

  7. Chapter12

    package scalaimport java.awt.event.{ActionEvent, ActionListener}import javax.swing.JButton import sc ...

  8. 设计模式——抽象工厂(Abstract Factory)

    提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们的具体类. ——DP UML类图 模式说明 抽象工厂与工厂方法在定义上最明显的区别是“创建一系列相关或相互依赖对象的接口”,由此可以看出抽象工 ...

  9. 解决gap 采用increapment scn 方式 操作。

    ###########1 1.查看备库的scn ⚠️如果控制文件,数据文件,数据文件头部的scn不一致,需要根据日志中的gap的起始sequence# 找到对应的scn col  current_sc ...

  10. 牛客网练习赛26B(简单的dp)

    题目链接:https://www.nowcoder.com/acm/contest/180/B 链接:https://www.nowcoder.com/acm/contest/180/B来源:牛客网 ...