python 教程 第二十章、 数据库编程

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 第二十章、 数据库编程 环境设置 1).安装MySQL-python http://www.lfd.uci.edu/~gohlke/pythonlibs/ MySQL-python-1.2.3.win32-py2.

第二十章、 数据库编程
环境设置
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() 
相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
30天前
|
存储 数据采集 人工智能
Python编程入门:从零基础到实战应用
本文是一篇面向初学者的Python编程教程,旨在帮助读者从零开始学习Python编程语言。文章首先介绍了Python的基本概念和特点,然后通过一个简单的例子展示了如何编写Python代码。接下来,文章详细介绍了Python的数据类型、变量、运算符、控制结构、函数等基本语法知识。最后,文章通过一个实战项目——制作一个简单的计算器程序,帮助读者巩固所学知识并提高编程技能。
|
18天前
|
Unix Linux 程序员
[oeasy]python053_学编程为什么从hello_world_开始
视频介绍了“Hello World”程序的由来及其在编程中的重要性。从贝尔实验室诞生的Unix系统和C语言说起,讲述了“Hello World”作为经典示例的起源和流传过程。文章还探讨了C语言对其他编程语言的影响,以及它在系统编程中的地位。最后总结了“Hello World”、print、小括号和双引号等编程概念的来源。
102 80
|
1天前
|
关系型数据库 MySQL API
新手教程:数据库操作(使用PDO或MySQLi扩展)
本文为新手介绍如何使用PDO和MySQLi扩展连接与操作MySQL数据库。PDO更现代灵活,支持多种数据库,适合大多数应用;MySQLi提供面向过程和面向对象两种API,适合直接控制数据库操作。教程涵盖安装配置、创建连接、执行查询(查询、插入、更新、删除)及错误处理等内容。希望这篇教程能帮助你快速上手PHP中的数据库操作!
43 30
|
7天前
|
Python
[oeasy]python055_python编程_容易出现的问题_函数名的重新赋值_print_int
本文介绍了Python编程中容易出现的问题,特别是函数名、类名和模块名的重新赋值。通过具体示例展示了将内建函数(如`print`、`int`、`max`)或模块名(如`os`)重新赋值为其他类型后,会导致原有功能失效。例如,将`print`赋值为整数后,无法再用其输出内容;将`int`赋值为整数后,无法再进行类型转换。重新赋值后,这些名称失去了原有的功能,可能导致程序错误。总结指出,已有的函数名、类名和模块名不适合覆盖赋新值,否则会失去原有功能。如果需要使用类似的变量名,建议采用其他命名方式以避免冲突。
29 14
|
26天前
|
关系型数据库 MySQL 数据库
Python处理数据库:MySQL与SQLite详解 | python小知识
本文详细介绍了如何使用Python操作MySQL和SQLite数据库,包括安装必要的库、连接数据库、执行增删改查等基本操作,适合初学者快速上手。
180 15
|
16天前
|
分布式计算 大数据 数据处理
技术评测:MaxCompute MaxFrame——阿里云自研分布式计算框架的Python编程接口
随着大数据和人工智能技术的发展,数据处理的需求日益增长。阿里云推出的MaxCompute MaxFrame(简称“MaxFrame”)是一个专为Python开发者设计的分布式计算框架,它不仅支持Python编程接口,还能直接利用MaxCompute的云原生大数据计算资源和服务。本文将通过一系列最佳实践测评,探讨MaxFrame在分布式Pandas处理以及大语言模型数据处理场景中的表现,并分析其在实际工作中的应用潜力。
53 2
|
21天前
|
数据可视化 DataX Python
Seaborn 教程-绘图函数
Seaborn 教程-绘图函数
46 8
|
21天前
Seaborn 教程-主题(Theme)
Seaborn 教程-主题(Theme)
67 7
|
21天前
|
Python
Seaborn 教程-模板(Context)
Seaborn 教程-模板(Context)
47 4
|
21天前
|
数据可视化 Python
Seaborn 教程
Seaborn 教程
43 5