《Python程序设计》习题与答案 下载本文

内容发布更新时间 : 2024/11/5 11:27:03星期一 下面是文章的全部内容请认真阅读。

第14章数据库编程

14.1简单介绍SQLite数据库。 答:

SQLite是内嵌在Python中的轻量级、基于磁盘文件的数据库管理系统,不需要服务器进程,支持使用 语句来访问数据库。该数据库使用

C语言开发,支持大多数 SQL91标准,支持原子的、一致的、独立的和持久

SQL

的事务,不支持外键限制;通过数据库级的独占性和共享锁定来实现独立事务,当多个线程同时访问同一个数 据库并试图写入数据时,每一时刻只有一个线程可以写入数据。 库完全存储在单个磁盘文件中,以 实现数据库的备份。

14.2使用Python内置函数dir()查看Cursor对象中的方法,并使用内置函数 答:略。

14.3叙述使用Python操作Access数据库的步骤。 答:

(1) 建立数据库连接 import win 32com.clie nt conn.Open (DSN)

(2) 打开记录集

rs_name = 'MyRecordset' # 表名

rs.Ope n('[' + rs_n ame + ']', conn, 1,3)

(3) 操作记录集 rs.AddNew() rs.Update()

(4) 操作数据

sql_stateme nt = \conn.Open (DSN)

conn .Execute(sql_stateme nt) conn .Close()

(5) 遍历记录 rs.MoveFirst() cou nt = 0 while 1:

help()查看其用法。

SQLite支持2TB大小的单个数据库,每个数据

B+树数据结构的形式存储,一个数据库就是一个文件,通过简单复制即可

if rs.EOF:

break else:

cou nt = cou nt + 1 rs.MoveNext()

14.4叙述使用Python操作MS SQL Server数据库的步骤。 答:

可以使用pywin32和pymssql两种不同的方式来访问

MS SQL Server数据库。

先来了解一下 pywin32模块访问MS SQL Server数据库的步骤。 (1) 添加引用: import adodbapi

import adodbapi.ado_c on sts as adc

(2) 创建连接: Cfg =

con str = r\Cfg['serve门,'sa', Cfg['password']) conn = adodbapi.c onn ect(c on str)

(3) 执行sql语句: cur = conn. cursor()

sql = '''select * from softextBook where title='{0}' and remark3!='{1}\cur.execute(sql) data = cur.fetchall() cur.close()

(4) 执行存储过程:

#假设proName有三个参数,最后一个参数传了

null

ret = cur.callproc('procName',(parm1,parm2,N on e)) conn .commit。

(5) 关闭连接 conn .close()

接下来再通过一个示例来简单了解一下使用 pymssql模块访问MS SQL Server数据库的方法。

import pymssql

conn = pymssql.c onn ect(host='SQL01', user='user', password='password', database='mydatabase') cur = conn. cursor()

cur.execute('CREATE TABLE pers on s(id INT, name VARCHAR(IOO))')

cur.executema ny(\

conn .commit。

cur.execute('SELECT * FROM pers ons WHERE salesrep=xi no s.ki ng', 'Joh n Doe') row = cur.fetch on e() while row:

print \row = cur.fetcho ne()

cur.execute(\conn .close()

14.5叙述MySQLDb模块提供的数据库访问方法。 答:

Python访问MySQL数据库可以使用 MySQLDb模块,该模块主要方法有:

commit():提交事务。 rollback。:回滚事务。

callproc(self, proc name, args):用来执行存储过程,接收的参数为存储过程名和参数列表,返回值为受 影响的行数。

execute(self, query, args):执行单条sql语句,接收的参数为 sql语句本身和使用的参数列表,返回值为 受影响的行数。

executemany(self, query, args):执行单条sql语句,但是重复执行参数列表里的参数,返回值为受影响 的行数。

nextset(self):移动到下一个结果集。 fetchall(self):接收全部的返回结果行。

fetchmany(self, size=None):接收 size 条返回结果行,如果 回 cursor.arraysize 条数据。

fetchone(self):返回一条结果行。

scroll(self, value, mode='relative'):移动指针到某一行,如果

value条;如果 mode='absolute',则表示从结果集的第一行移动

mode='relative',则表示从当前所在行移动 value 条。

size的值大于返回的结果行的数量,则会返

第15章多媒体编程

15.1编程程序,在窗口上绘制一个三角形,设置三个顶点为不同的颜色,并对内部进行光滑着色 答:

from Ope nGL.GL import * from Ope nGL.GLUT import * from Ope nGL.GLU import * import sys

class MyPyOpe nGLTest:

def __init__(self, width = 640, height = 480, title = 'MyPyOpe nGLTest'):

glutl nit(sys.argv)

glutI nitDisplayMode(GLUT_RGBA | GLUT_DOUBLE | GLUT_DEPTH) glutI nitWin dowSize(width, height) self.w indow = glutCreateWi ndow(title) glutDisplayFu nc(self.Draw) glutIdleFu nc(self.Draw) self.I ni tGL(width, height) #default draw ing fun cti on def Draw(self):

glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT) glLoadIde ntity() glTra nslatef(-2.0, 0.0, -8.0)

#draw 2D graphic, leav ing z to be 0 glBegi n(GL_POLYGON) glColor3f(1.0, 0.0, 0.0) glVertex3f(0.0, 1.0, 0.0) glColor3f(0.0, 1.0, 0.0) glVertex3f(1.0, -1.0, 0.0) glColor3f(0.0, 0.0, 1.0) glVertex3f(-1.0, -1.0, 0.0) glE nd() glTra nslatef(2.5, 0.0, 0.0) glutSwapBuffers()

def I ni tGL(self, width, height): glClearColor(0.0, 0.0, 0.0, 0.0) glClearDepth(1.0) glDepthFu

nc(GL_LESS) glShadeModel(GL_SMOOTH) glE nable(GL_POINT_SMOOTH) glE nable(GL_LINE_SMOOTH) glE nable(GL_POLYGON_SMOOTH) glMatrixMode(GL_PROJECTION) glHi nt(GL_POINT_SMOOTH_HINT,GL_NICEST) glHi nt(GL_LINE_SMOOTH_HINT,GL_NICEST) glHi nt(GL_POLYGON_SMOOTH_HINT,GL_FASTEST) glLoadlde ntity()

gluPerspective(45.0, float(width)/float(height), 0.1, 100.0) glMatrixMode(GL_MODELVIEW) def Mai nLoop(self):

glutMai nLoop()

if __name__ == '__main__':

w = MyPyOpe nGLTest() w.Mai nLoop()

15.2编写程序,读取两幅大小一样的图片,然后将两幅图像的内容叠加到一幅图像,结果图像中每个像素 值为原两幅图像对应位置像素值的平均值。

答: