python 教程 第二十章、 数据库编程
第二十章、 数据库编程
环境设置
1).安装MySQL-python
http://www.lfd.uci.edu/~gohlke/pythonlibs/
MySQL-python-1.2.3.win32-py2.7.exe
1) 使用数据库接口
import MySQLdb
cxn = MySQLdb.Connect(host = '127.0.0.1', user = 'root', passwd = 'root')
cur = cxn.cursor()
try:
cur.execute("DROP DATABASE test610")
except Exception, e:
print e.args;
finally:
pass
cur.execute("CREATE DATABASE test610")
cur.execute("USE test610")
cur.execute("CREATE TABLE users (id INT, name VARCHAR(8))")
cur.execute("INSERT INTO users VALUES(10, 'tao')")
cur.execute("INSERT INTO users VALUES(20, 'jin')")
cur.execute("INSERT INTO users VALUES(31, 'dan')")
cur.execute("UPDATE users SET name = 'jim' WHERE id = 20")
cur.execute("SELECT * FROM users")
for row in cur.fetchall():
print '%s\t%s' %row
cur.close()
cxn.commit()
cxn.close()
2) 使用ORM_SQLalchemy
环境设置
安装SQLalchemy(SQLAlchemy-0.7.1.tar.gz)
下载http://www.sqlalchemy.org/download.html
解压放到python安装目录下的lib目录里
D:\Python27\Lib\SQLAlchemy-0.7.1>python setup.py install
from sqlalchemy import *
##Precondition:database 'test0615' do exist!
engine = create_engine('mysql://root:root@localhost/test0615')
##Define and Create Tables
metadata = MetaData()
users = Table('users', metadata,
Column('id', Integer, primary_key=True),
Column('name', String(10)),
Column('fullname', String(20)),
)
address = Table('address', metadata,
Column('id', Integer, primary_key=True),
Column('user_id', None, ForeignKey('users.id')),
Column('email', String(20), nullable=False)
)
metadata.create_all(engine, checkfirst = True)
##Insert Expressions
#method 1
ins = users.insert().values(name='Jim', fullname='Jim T')
conn = engine.connect()
result = conn.execute(ins)
#method 2
result = engine.execute(users.insert(), name='fred', fullname="Fred F")
#method 3
metadata.bind = engine
result = users.insert().execute(name="mary", fullname="Mary C")
metadata.bind = None
#method 4
conn.execute(address.insert(), [
{'user_id': 1, 'email' : 'jack@yao.com'},
{'user_id': 2, 'email' : 'wedy@aol.com'},
])
##Selecting
s = select([users])
result = conn.execute(s)
#method 1
for row in result:
print row
#method 2
s = select([users, address], users.c.id==address.c.user_id)
for row in conn.execute(s):
print row
##Updates
conn.execute(users.update().
where(users.c.name == 'jack').
values(name = 'ed')
)
##Deletes
conn.execute(address.delete().where(address.c.id > 20))
conn.execute(users.delete().where(users.c.name > 'm'))
##遗留问题,无法关闭数据库连接
##metadata.drop_all(engine, [users, address], checkfirst = False)
3) 使用ORM_SQLObject
环境设置
安装FormEncode (FormEncode-1.2.4.tar.gz)
下载http://pypi.python.org/pypi/FormEncode
解压放到python安装目录下的lib目录里
D:\Python27\Lib\FormEncode-1.2.4>python setup.py install
安装SQLObject (SQLObject-1.0.1.tar.gz)
下载http://pypi.python.org/pypi/SQLObject
解压放到python安装目录下的lib目录里
D:\Python27\Lib\SQLObject-1.0.1>python setup.py install
#!/usr/bin/env python
import os
import MySQLdb
import _mysql_exceptions
from sqlobject import *
DBNAME = 'database0615'
url = 'mysql://root:root@localhost/%s' % DBNAME
COLSIZ = 10
FIELDS = ('firstName', 'middleInitial', 'lastName')
cxn1 = sqlhub.processConnection = connectionForURI(url)
cxn1.query("DROP DATABASE %s" % DBNAME)
cxn1.query("CREATE DATABASE %s" % DBNAME)
cxn1.close()
try:
class Person(SQLObject):
firstName = StringCol()
middleInitial = StringCol(length=1, default=None)
lastName = StringCol()
Person.createTable()
except NameError, e:
pass
#make SQLObject print out the SQL it executes
Person._connection.debug = False
#Insert
p1 = Person(firstName = "John", lastName = "Doe")
p2 = Person(firstName = "Jin", lastName = "Tao")
p3 = Person(firstName = "Dan", lastName = "Tao")
p4 = Person(firstName = "Joan", lastName = "Wu")
#Select
print p2.lastName, p2.firstName
print list(Person.select(AND(Person.q.lastName == "Tao",
Person.q.firstName == "Jin")))
#Update
p1.middleInitial = 'S'
p3.middleInitial = 'T'
p2.lastName = 'Hu'
#Delete
Person.delete(p1.id)
for row in Person.select():
print '%s%s%s' % (tuple([str(getattr(row,
field)).title().ljust(COLSIZ) for field in FIELDS]))
Person.deleteBy()
python 教程 第二十章、 数据库编程的更多相关文章
- C#图解教程 第二十章 异步编程
笔记 异步编程 什么是异步 示例 async/await特性的结构什么是异步方法 异步方法的控制流await表达式取消一个异步操作异常处理和await表达式在调用方法中同步地等待任务在异步方法中异步地 ...
- Python教程:操作数据库,MySql的安装详解
各位志同道合的同仁请点击上方关注 本教程是基于Python语言的深入学习.本次主要介绍MySql数据库软件的安装.不限制语言语法,对MySql数据库安装有疑惑的各位同仁都可以查看一下. 如想查看学习P ...
- python 教程 第二十二章、 其它应用
第二十二章. 其它应用 1) Web服务 ##代码 s 000063.SZ ##开盘 o 26.60 ##最高 h 27.05 ##最低 g 26.52 ##最新 l1 26.66 ##涨跌 c ...
- 简明python教程七----面向对象的编程
根据操作数据的函数或语句块来设计程序的,被称为面向过程的编程. 把数据和功能结合起来,用称为对象的东西包裹起来的组织程序的方法,称为面向对象的编程理念. 类和对象是面向对象编程的两个主要方面.类创建一 ...
- python 教程 第二十一章、 扩展Python
第二十一章. 扩展Python /* D:\Python27\Lib\Extest-1.0\Extest2.c */ #include <stdio.h> #include <std ...
- python 教程 第十章、 输入/输出
第十章. 输入/输出 1) 文件 poem = '''Programming is fun use Python!''' f = file('poem.txt', 'w') # open for ...
- 进击的Python【第二十章】
1.Django请求的生命周期 路由系统 -> 试图函数(获取模板+数据=>渲染) -> 字符串返回给用户 2.路由系统 /index/ -> 函数或类.as_view() / ...
- C# 图解教程 第二章 C#编程概述
C#编程概述 一个简单的C#程序标识符关键字Main:程序的起始点从程序输出文本注释 C#编程概述 一个简单的C#程序 标识符 标识符是一种字符串,用来命名变量.方法.参数和许多后面将要阐述的其他程序 ...
- python下的MySQL数据库编程
https://www.tutorialspoint.com/python/python_database_access.htm if you need to access an Oracle dat ...
随机推荐
- hadoop容灾能力测试 分类: A1_HADOOP 2015-03-02 09:38 291人阅读 评论(0) 收藏
实验简单来讲就是 1. put 一个600M文件,分散3个replica x 9个block 共18个blocks到4个datanode 2. 我关掉了两个datanode,使得大部分的block只在 ...
- php实现合并两个排序的链表(很多情况下新建数组装东西比连东西逻辑快很多)($cur=$cur->next;的理解)
php实现合并两个排序的链表(很多情况下新建数组装东西比连东西逻辑快很多)($cur=$cur->next;的理解) 一.总结 $cur=$cur->next;这句话需要好好理解 指$cu ...
- java用volatile或AtomicBoolean实现高效并发处理 (只初始化一次的功能要求)
最近碰到一个这样的功能要求:怎么在一个类里面,实现高效并发处理下只可以初始化一次的方法? 实现方式: 1)volatile方式: /** * Created by Chengrui on 2015/7 ...
- 【38.24%】【POJ 1201】Intervals
Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 25902 Accepted: 9905 Description You are ...
- Windows 计算程序运行时间(高精度计时)
首先,认识一下clock()和GetTickCount(): 一.clock()clock()是C/C++中的计时函数,而与其相关的数据类型是clock_t.在MSDN中,查得对clock函数定义如下 ...
- ios开发总结,日常开发:ios开发功能收集,经验分享等等(不断更新中。。。)
github资料学习和下载地址:https://github.com/niexiaobo/MyDailyDevelopmentNotes ios 学习模块 ios APP 日志管理的重要性: 一个功能 ...
- SQL Server2008生成数据库字典
1.我们在开发过程中可能会遇到这样的一种情况"当我们进行维护其他人的项目时或者项目的二次开发时可能会对原始的数据表进行分析",这里为大家介绍一种方便快捷生成数据库字典的方式. 我们 ...
- Golang快速入门
Go语言简介: Golang 简称 Go,是一个开源的编程语言,Go是从2007年末由 Robert Griesemer, Rob Pike, Ken Thompson主持开发,后来还加入了Ian L ...
- hdfs的基本原理和基本操作总结
hdfs基本原理 Hadoop分布式文件系统(HDFS)被设计成适合执行在通用硬件(commodity hardware)上的分布式文件系统.它和现有的分布式文件系统有非常多共同点. 但同一时候,它和 ...
- Oracle 11g对依赖的推断达到字段级
在Oracle 10g下,推断依赖性仅仅达到了对象级.也就是说存储过程訪问的对象一旦发生了变化.那么Oracle就会将存储过程置为INVALID状态.所以在为表做了DDL操作后.须要把存储过程又一次进 ...