内容发布更新时间 : 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编写程序,读取两幅大小一样的图片,然后将两幅图像的内容叠加到一幅图像,结果图像中每个像素 值为原两幅图像对应位置像素值的平均值。
答: