98-364模拟题
1、您有一个数据库表,其中存储关于学生考勤的信息。还有一个按如下方式定义的数据集:
3、哪条语句将创建索引?
A create table employee(employeeID integer distinct)
B create table employee(employeeID integer primary key)
C create table employee(employeeI
D integer index)
D create table employee(employeeID integer null)
参考答案:b 创建主键的时候将自动创建索引
4、您正在创建一个名为Student的数据库对象以存储以下数据:
A create (table Student ID INT,Name VARCHAR(100),Age INT)
B create table Student (ID INT,Name VARCHAR(100),Age INT)
C create Student (I
D INT,Name VARCHAR(100),Age INT)
D create table( ID INT,Name VARCHAR(100),Age INT)
参考答案:b
5、您需要设置一个数据库以提供北美哺乳动物的视图。
请将结构化查询语言(SQL)语句与SQL查询进行匹配
代码段答案区
Create view[dbo].[NorthAmMam_View] Create view[dbo].[NorthAmMam_View] generate view[dbo].[NorthAmMam_View] as select a.Id,https://www.doczj.com/doc/534854865.html,
as join a.Id,https://www.doczj.com/doc/534854865.html, from Animal a
as select a.Id,https://www.doczj.com/doc/534854865.html, where a.class=’Mammals’
from Animal a and a.InNorthAmerica=1
join Animal a
参考答案:见题目中绿色标注部分
6、您开发一个数据库来存储有关教科书的数据。必须存储数据以供日后处理。
您应该使用哪个数据库对象来存储数据?
A 函数
B 视图
C 表
D 存储过程
参考答案:c
7、本问题要求您评估带下划线的文本来判断其对错。
您创建一个表来存储最近发布的视频游戏机器评审得分。
若要创建一个视图以返回按字母顺序排列的游戏名称的列表,完成的SQL语句应如下所示:
Create view MyGames as select Name from Games.
说明:请查看带下划线的文本。如果该文本使得表述语句正确,请选择“”“无需更改”。否则,请选择使表述语句正确的答案选项。
A select * from Games
B select Name from Games order by Name
C 无需更改
D select * from Games where Name between ‘A’ and ‘Z’
参考答案:b
8、您正在编写一条SQL语句以创建表。
哪两个SQL关键字可在create table语句中使用?请选择两个答案。
A order by
B insert into
C primary key
D constraint
参考答案:c d
9、关系数据库管理系统主要使用视图来执行报告生成器功能。
A 安全机制
B 无需更改
C 数据验证
D SQL编辑器
参考答案:a
10、您需要存储介于3到30个字符之间的产品名称。您需要将使用的存储空间量降到最低,应该使用哪种数据类型?
A varchar(3,30)
B char(30)
C varchar(30)
D char(3,30)
参考答案:c
11、
与完整恢复模式相比,使用简单恢复模式进行数据库备份时,工作丢失风险:
A 更大
B 更小
C 相同
与完整恢复模式相比,使用简单恢复模式进行数据库备份时,日志文件备份:
A 更少
B 更多
C 相同
参考答案:a a
12、判断以下每个表述语句的对错。
A SQL Server 登录可以使用Windows身份验证
B SQL Server 角色提供服务器级别的权限
C SQL Server 登录仅被授予对数据库视图的权限
参考答案:对对错
13、您需要临时授予一组用户对三个表的权限。您没有创建新组的权限。可以通过哪两种方法来实现这一目标?请选择两个答案。
A 向每个用户授予对表的显式权限。
B 创建一个共享用户账户,然后向该账户授予权限
C 将用户添加到新角色中,然后向该角色授予权限
D 将用户添加到具有相应访问权限的现有角色中
参考答案:a c
14、UPDATE语句会在哪种数据库结构上运行?
A 用户
B 角色
C 触发器
D 表
参考答案:d
15、您有一个名为Product的表。Product表有ProductDescription 和ProductCategory 列。您需要将Product表中所有的spoon的ProductCategory值更改为43.应该使用哪条语句?
A Set Product where ProductDescription=’spoon’ to ProductCategory=43
B Update Product where ProductDescription=’spoon’ set ProductCategory=43
C Update Product set ProductCategory=43 where ProductDescription=’spoon’
D Set Product to ProductCategory=43 where ProductDescription=’spoon’
参考答案:c
16、您有一个包含以下列的数据库表:
--dbo.AddressInfo
--Columns
--StreetAddress(varchar(255),null)
--City(varchar(255),null)
--State(varchar(2),null)
--PostalCode(varchar(15),null)
您需要使用事务以确保该数据库具有数据完整性和引用完善性。选择哪一个。
A update transaction VolunteerDelete;
Delete from Volunteer where Id=13;
End transaction volunteerDelete;
B while transaction VolunteerDelete;
Delete from Volunteer where Id=13;
catch transaction volunteerDelete;
C open transaction VolunteerDelete;
Delete from Volunteer where Id=13;
close transaction volunteerDelete;
D begin transaction VolunteerDelete;
Delete from Volunteer where Id=13;
commit transaction volunteerDelete;
参考答案:d
19、您在一家小型汽车贸易公司工作。您需要从公司数据库中删除一款汽车。有关这款汽车的信息存储在以下表中。
所有汽车零件都是定制的,因此他们在每个表中都分别有一行。未启用级联删除,但启用了引用完整性,必须首先从哪个表开始删除?
A Engine
B Make
C ModelEngine
D Model
参考答案:c
20、您有以下表定义:
CREATE TABLE Product
(ProductID INTEGER,
Name VARCHAR(20))
您需要插入一个新产品。该产品的名称是Plate,产品的ID是12345.
应该使用哪条语句?
A insert into Product(ProductID,Name) values (12345,’Plate’);
B insert 12345,’Plate’ into Product
C Insert new ProductID=12345,Name=’Plate’ into Product
D insert into Product values (ProductID=12345,Name=’Plate’)
参考答案:a
21、您有两个名为Cars和Color并且定义如下的表。这两个表通过ColorId相关联。
您运行以下SQL语句:
Select *
from Cars
Left Outer Join Colors
On Cars.ColorID=Colors. ColorID
该SQL语句会返回多少行?
A 0
B 6
C 2
D 3
参考答案:d
22、判断对错:
ALTER TABLE 将删除表中的所有行而不记录各个行的删除情况。
A TRUNCATE TABLE
B 无需更改
C DROP TABLE
D CREAT
E TABLE
参考答案:a
23、您执行以下语句:
Select DepartmentName
From Department
Where DepartmentID=
(select DepartmentID from employee where employeeID=1234)
A 内部联接的示例
B 联合的示例
C 子查询的示例
D 外部联接的示例
参考答案:c
24、您创建以下表,来列出您借给朋友多少本书。
哪条语句?
A copy * into Employee select * from Employee
B insert * from Employee into EmployeeCopy
C insert into EmployeeCopy select * from Employee
D select * into EmployeeCopy select * from Employee 参考答案:c
28、判断对错:
第一范式要求数据库不包括重复组。
A 无需更改
B 重复的行
C 外键
D 复合键
参考答案:a
29、您有两个定义如下的数据库表。StateID列在State表中具有唯一性。AddressID列在Address表中具有唯一性。这两个表通过StateID列相关联。
请根据上图中提供的信息,使用下拉菜单完成每个表述语句的答案选项。
A StateID是State表中的(索引,联合,外键,主键)
B StateID是Address表中的(索引,联合,外键,主键)
参考答案:主键外键
30、在上大学期间,您接受了当地一家慈善机构提供的IT实习生职位。该慈善机构需要报告两个表中都存在并且相关联的数据。
您需要在这两个表中的数据之间建立关系。您应该使用哪种约束?
A 链接键
B 默认键
C 索引键
D 外键
参考答案:d
31、您有以下SQL查询:
Select * from dbo.ProAthlete where Salary >5000
查询需要太长时间才能返回数据。
您需要提高查询性能,应向Salary列中添加哪一项?
A 非空约束
B 外键
C 默认约束
D 索引
参考答案:d
32、判断以下表述语句的对错。
A 聚焦索引可基于聚焦索引建,按顺序排列和存储表或视图的数据列
B 非聚焦索引是通过使用聚焦索引或堆在表或视图上定义的。
C 唯一索引可确保索引键不包含重复值,并且表或视图中的每一行都是唯一的
D 筛选索引是一种聚焦索引,针对从表中选择一小部分行的查询进行优化
参考答案:对错对错
33、判断以下表述语句的对错
A 非聚焦索引会按顺序存储所有表数据
B 聚焦索引会按未排序顺序存储所有表数据
C 可以对同一张表同时使用聚焦索引和非聚焦索引
参考答案:错错对
把这种正文内容本身就是一种按照一定规则排列的目录称为“聚集索引”。
这种目录纯粹是目录,正文纯粹是正文的排序方式称为“非聚集索引”,字典。
34、哪种约束可确保每个客户的ID列中的值是唯一的?
A foreign key
B primary key
C sequential
D distinct
参考答案:b
35、关系数据库管理系统利用属性的概念来确保输入到字段中的数据是有效的。
A 索引
B 主键
C 无需更改
D 约束
参考答案:d
36、您有两个定义如下的数据库表,第一个表包含有关学生的信息,第二个表包含有关课程的信息。这两个表通过CourseID相关联。
请将CourseName 与 StudentName进行匹配。
说明:请将左面列中的CourseName拖到右侧对应的StudentName上。每个CourseName可以使用一次、多次或不使用。
课程名称答案区
Geography StudentName CourseName
History Brad Reading
Math Joe Math
Reading Susan Science
Science
参考答案:见高亮显示
37、要从数据库中删除表,应使用什么命令?
A Remove Table
B Drop Table
C Update Table
D Delete Table
参考答案:b
38、评估带下划线的文本:
行包含表中单挑记录的信息。
A 视图
B 列
C 无需更改
D 数据类型
参考答案:c
39、要向表中添加列,应使用哪个命令?
A change
B alter
C update
D insert
E modify
参考答案:b
40、您在一家咖啡店工作。他们要求您搭建一个网站以存储购买费用。
您需要为数据库表建议一种数据类型,以便针对收取的金额进行财务功能。
您应该建议使用哪种数据类型?
A bit
B varchar
C money
D binary
参考答案:c
41、update 和delete 语句的一个区别是什么?
A update语句不会从表中删除行
B 一条update语句只能更改一行
C delete语句不能用where子句
D delete 语句只能在存储过程中运行
参考答案:a
42、您正在编写一条SQL语句,以便从表中检索行。
您应该使用哪个数据操作语言(DML)命令?
A get
B output
C select
D read
参考答案:c
43、评估带下划线的文本的对错。
创建一个查询以便使用UPDATE语句返回一组表数据。
A INSERT
B 无需更改
C SELECT
D REPLACE
参考答案:c
44、评估带下划线文本的对错。
使用ALTER语句可向数据库中添加一个新表。
A UPDATE
B CREATE
C 无需更改
D INSERT
参考答案:b
45、您需要删除一个数据库表。应使用哪个数据定义语言(DDL)关键字?
A ALTER
B DROP
C TRUNCATE
D DELETE
参考答案:b
46、您的班级项目要求您帮助一家慈善机构创建一个网站来登记志愿者。
该网站必须存储有关志愿者的以下数据:
●名字
●姓氏
●电话号码
●电子邮件地址
您需要推荐一种正确的方法来存储这些数据。
您会推荐哪种方法?
A 创建一个包含多列的视图,然后将这些列命名为名字、姓氏、电话号码和电子邮件
B 创建一个包含多行的表格,然后将这些行命名为名字、姓氏、电话号码和电子邮件
C 创建一个包含多列的表格,然后将这些列命名为名字、姓氏、电话号码和电子邮件
D 创建一个包含多行的视图,然后将这些行命名为名字、姓氏、电话号码和电子邮件参考答案:c
47、评估下划线文本的对错。
截断数据库术语用来描述将备份应用于已破坏或损坏的数据库的过程。
A 提交
B 还原
C 附加
D 无需更改
参考答案:b
48、您的数据库中有一个Department表和一个Employee表。
您需要确保一名员工只能被分配到一个现有部门,
应对Employee表应用何种内容?
A 数据类型
B 主键
C 唯一约束
D 索引
E 外键
参考答案:e
49、判断以下表述语句的对错。
A 您可以使用存储过程删除数据
B 函数必须有返回值
C 存储过程必须有返回值
参考答案:对对错
50、将数据类型与其用法进行匹配。
数据类型答案区
用法数据类型
Numeric 表示您这周赚取的金额 numberic
Smallint 表示圆的半径 float
Float 表示引擎中的汽缸数 smallint
51、哪个关键字可在CTEATE TABLE语句中使用?
A DISTINCT
B UNIQUE
C ORDER BY
D GROUP BY
参考答案:b
52、您有两个表:分别名为SalesPerson 和Sales.
您需要确保:对于Sales表中的每条记录,SalesPerson表中都有关联的有效销售人员记录。您应该将哪种数据库对象添加到Sales表中?
A 主键
B 聚焦索引
C 非聚焦索引
D 外键
参考答案:d
53、您有一个名为Student的表,包含100行。一些行的FirstName列中有Null值。您执行一下语句:
Delete from Student
结果是什么?
A 所有行和表定义均被删除
B 该表中的所有行均被删除
C FirstName列中包含NULL值的所有行均将被删除
D 您将收到错误消息
参考答案:b
54、您有一个具有定义如下的服务器角色的用户:
用户可以对服务器上的数据执行《不受限制的》操作
用户可以对服务器上的数据库对象执行《不受限制的》操作
55、函数和存储过程的一个区别是,函数:
A 不能接受参数
B 必须从触发器调用
C 不能包含事务
D 必须返回值
参考答案:d
56、评估带下划线文本的对错。
视图是包含数据库中所有数据的数据库对象。
A 查询
B 存储过程
C 表
D 无需更改
参考答案:c
57、评估带下划线文本的对错
使用 ALLOW SELECT 命令可向用户授予读取表中的数据的权限。
A 无需更改
B GRANT SELECT
C PERMIT READ
D LET READ
参考答案:b
58、要创建一个存储过程的原因是:
A 将存储空间降到最低
B 使用户能够控制查询逻辑
C 绕过区分大小写的要求
D 提高性能
参考答案:d
59、您的班级项目要求您帮助一家慈善机构搭建一个网站。
该网站收集有关志愿者的信息。每条志愿者记录都必须唯一的进行标识。为每位志愿者存储以下信息:
●名字
●姓氏
●出生日期
●电话号码
●照片
您需要创建一个表以满足上述要求。
请将结构化查询语言(SQL)语句与SQL查询进行匹配。
代码段答案区
TimeStamp Null Create Table [dbo].[Volunteer](
Date Null [id] Int Not Null Primary key,
Image Null [GivenName] Nchar(255) Null,
Xml Null [Surname] Nchar(255) Null,
Int Not Null Primary key [DateOfBirth] Date Null,
Int Not Null Foreign key [PhoneNumber] Nchar(10) Null,
[Photo] Image Null)
60、评估带下划线文本的对错。
在关系数据库中,属于表的外键的字段可以包含null值。
A 不能引用另一张表的主键
B 对于表中的每一行必须是唯一的
C 必须是numberic数据类型
D 无需更改
参考答案:d
61、评估带下划线文本的对错。
端口20 和21 是保护SQL Server安全的默认端口。
A 411和412
B 无需更改
C 1433和1434
D 67和68
参考答案:c
E Region
F City
参考答案:b d
63、您在某事务内执行一条语句,以便从表中删除100行。仅删除40行后,事务失败。数据库中的结果是什么?
A 不会从表中删除行
B 该事务将重新启动
C 表将会被破坏
D 将会从表中删除四十行。
参考答案:a
64、您有一个名为Employee的表,其中包括以下列:EmployeeID、EmployeeName,应使用哪条语句以返回表的行数?
A select count(*) from employee
B select * from employee
C select count(rows) from employee
D select sum(*) from employee
参考答案:a
65、您需要列出每个产品的名称和价格,按价格从高到低的顺序排序。应该使用哪条语句?
A select Name,Top Price from Product
B select Name,Price from Product order by Price desc
C select Name,Price from Product order by Price asc
D select Name,Bottom Price from Product
参考答案:b
66、您删除名为Order的表中的行。OrderItem表中的相应行将自动删除。这一过程是:
A 集成式删除示例
B 级联删除示例
C 瀑布式删除示例
D 功能删除示例
E 多米诺式删除示例
参考答案:b
67、您有一个包含产品ID和产品名称的表。您需要编写一条Update语句,以将特定产品的名称更改为glass。应在Update语句中包括什么内容?
A let ProductName = ‘glass’
B set ProductName = ‘glass’
C exec ProductName = ‘glass’
D assign ProductName = ‘glass’
参考答案:b
68、您需要向数据库表中添加行。应使用哪个结构化查询语言(SQL)关键字?
A insert
B update
C create
D join
参考答案;a
A 外键
B 重复组
C 重复的行
D 复合键
参考答案:b
72、您需要基于两个相关数据表中都包含的列从这两个表中检索数据。应在查询中使用哪个命令?
A join
B truncate
C intersect
D union
参考答案:a
A PetID
B Year
C Birthday
D ID
参考答案:a
第10 章Python 操作数据库 Python 数据分析(进阶篇)
主要内容CONTENTS 02结构化查询语言SQL 03操作数据库核心API 04Python操作数据库案例01数据库基础
01数据库基础
Python操作数据库 数据库基础 数据库是数据的仓库,将大量数据按照一定的方式组织并存储起来,方便进行管理和维护,例如快速检索和统计等。数据库的主要特点: ?以一定的方式组织、存储数据; ?能为多个用户共享; ?与程序彼此独立。 ?…… 数据库管理系统是一种操纵和管理数据库的大型软件。它对数据库进行统一的管理和控制,以保证数据库的安全性和完整性。用户通过DBMS访问数据库中的数据,数据库管理员通过DBMS进行数据库的维护工作。主要功能包括:数据定义(创建数据库、表等)、数据操纵(增删查改等)、数据库控制(并发、权限等)、数据库维护(转存、恢复等)等。
Python操作数据库 常见的数据库类型 当前常见的数据库类型有:关系型数据库、键值存储数据库、面向文档数据库、图数据库等。 ?关系型数据库:当前应用最广泛的数据库类型,把复杂的数据结构归结为简单的二元关系(即二维表形式),例如MySQL、SQL Server、Oracle、SQLite等; ?键值存储数据库:使用简单的键值方法来存储数据,其中键作为唯一标记,是一种 非关系数据库,例如Redis; ?面向文档数据库:用于存放并获取文档,主要是XML、JSON等具备自我描述特性、呈现层次结构的文档,例如MongoDB; ?图数据库:一种存储图关系的数据库,应用图理论存储实体之间的关系信息,例如Neo4J。
本文由我司收集整编,推荐下载,如有疑问,请与我司联系Python 的MySQLdb 模块插入数据没有成功与autocommit(自动提 交)的关系 2013/11/17 0 在使用PYTHON mysqldb的时候插入数据发现数据库没有你当前插入的数据,这时候实际上跟commit有关系 ?用MySQLdb 操作数据库,插入数据之后发现数据库中依然为空,不知原因为何。开启mysqld 的log 设置项之后发现日志文档中更有执行sql 语句,直接复制语句在客户端中执行也没有问题,那么为什么通过MySQLdb 的插入全部没有结果呢?我怀疑是MySQLdb 的问题,在日志文件中仔细的看了一遍运行的所有sql 语句,在建立连接之后还运行了这句:set autocommit=0。这句话的嫌疑很大,因为这个涉及到一个语句提交执行的问题,而且对于commit 我有点印象,好像以前学习MySQLdb 的时候,特意注意到了这点。不管怎样,这就找准了关键字:MySQLdb autocommit根据网上搜到的结果,可以大概了解到,MySQLdb 在连接后关闭了自动提交,自动提交对于innodb 引擎很重要,没有这个设置,innodb 引擎就不会真正执行语句。解决的办法:1、语句末尾加上“COMMIT;”2、运行完语句,至少在关闭数据库之前提交一下,如:connmit()3、数据库连接建立之后,设置自动提交,如:conn.autocommit(1)只是不知道为什么innodb 会这样,可能是因为这是一个事务型数据库引擎,没有提交就不会在服务器上执行,只会缓存在客户端上的缘故吧!MySQL技术内幕:InnoDB存储引擎这本书好像出到第二版了,这些关于数据库方面的知识,还是要了解一下的。参考1、MySQLdb 插入数据失败?luchanghong/database/2012/06/20/mysqldb-insert-data-failed.html2、MySQLdb Python 模块autocommit属性测试及测试过程中关于数据库连接的理解 blog.csdn/gukesdo/article/details/7026371 ?tips:感谢大家的阅读,本文由我司收集整编。仅供参阅!
破釜沉舟: 为网站站长.设计师.编程开发者. 提供资源!https://www.doczj.com/doc/534854865.html, 用Python实现数据库编程 文章类别:Python 发表日期:2004-11-11 来源: CSDN 作者: wfh_178 <用PYTHON进行数据库编程> 老巫 2003.09.10 19 September, 2003 用PYTHON语言进行数据库编程, 至少有六种方法可供采用. 我在实际项目中采用,不但功能强大,而且方便快捷.以下是我在工作和学习中经验总结. 方法一:使用DAO (Data Access Objects) 这个第一种方法可能会比较过时啦.不过还是非常有用的. 假设你已经安装好了PYTHONWIN,现在开始跟我上路吧…… 找到工具栏上ToolsàCOM MakePy utilities,你会看到弹出一个Select Library的对话框, 在列表中选择'Microsoft DAO 3.6 Object Library'(或者是你所有的版本). 现在实现对数据的访问: #实例化数据库引擎 import win32com.client engine = win32com.client.Dispatch("DAO.DBEngine.35") #实例化数据库对象,建立对数据库的连接 db = engine.OpenDatabase(r"c:\temp\mydb.mdb") 现在你有了数据库引擎的连接,也有了数据库对象的实例.现在就可以打开一个recordset了. 假设在数据库中已经有一个表叫做 'customers'. 为了打开这个表,对其中数据进行处理,我们使用下面的语法: rs = db.OpenRecordset("customers") #可以采用SQL语言对数据集进行操纵 rs = db.OpenRecordset("select * from customers where state = 'OH'") 你也可以采用DAO的execute方法. 比如这样: db.Execute("delete * from customers where balancetype = 'overdue' and name = 'bill'") #注意,删除的数据不能复原了J
本文由我司收集整编,推荐下载,如有疑问,请与我司联系 Python操作MySQL案例 2016/01/23 0 最近都在学习Python代码,希望学会Python后,能给我带来更高的工作效率,因此每天坚持学习和拷代码,下面是一个Python操作MySQL的一个实例,该实例可以让更多的人更好了解MySQLdb模块的使用。我是Python菜鸟,通过学习别人的实例来让自己学到更多Python知识。 ? ?案例:用Python实现银行转账 ?一、在MySQL创建一张表account表,然后在里面插入两条数据: ?mysql show create table account\G*************************** 1. row *************************** Table: accountCreate Table: CREATE TABLE `account` ( `userid` int(11) DEFAULT NULL COMMENT ‘账号ID’, `money` int(11) DEFAULT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin1 row in set (0.02 sec)mysql 当前数据: ?mysql select * from account;+--------+-------+| userid | money |+--------+-------+| 1 | 200 || 2 | 200 |+--------+-------+2 rows in set (0.00 sec)mysql ?编辑脚本money.py文件,运行些脚本需要安装MySQLdb模块,详细安装和基本的使用可以参考我的博客:cnblogs/xuanzhi201111/p/5144982.html ?#!/usr/bin/env python#coding:utf-8#name:money.pyimport sysimport MySQLdb try: sql = “select * from account where userid = %s and money %s” % (source_userid,money) cursor.execute(sql) print “\033[;32m检查是否有足够的钱: \033[0m” + sql except Exception,e: raise Exception(‘执行sql错误:%s’ % e) else: rs = cursor.fetchall() if len(rs) != 1: raise Exception (“账号%s余额不足” % source_userid) finally: cursor.close()#用于减去转掉的部份金额def reduce_money(self,source_userid,money): cursor = self.conn.cursor() try: sql = “update account set money = money - %s where userid=%s” % (money,source_userid) cursor.execute(sql) print “\033[;32m从源账户%s 里扣掉对应的金额: \033[0m” % (source_userid) + sql except Exception,e: raise
python操作数据库PostgreSQL 1.简述 python可以操作多种数据库,诸如SQLite、MySql、PostgreSQL等,这里不对所有的数据库操作方法进行赘述,只针对目前项目中用到的PostgreSQL做一下简单介绍,主要包括python 操作数据库插件的选择、安装、简单使用方法、测试连接数据库成功。 2.数据库操作插件的选择 PostgreSQL至少有三个python接口程序可以实现访问,包括PsyCopg、PyPgSQL、PyGreSQL(PoPy已经整合在PyGreSQL中),三个接口程序各有利弊,需要根据实践选择最适合项目的方式。 推荐使用PsyCopg,对python开发框架的兼容性都很好,本文中我们只讨论这个插件。 3.PsyCopg的下载 官网下载psycopg2-2.5.1.tar.gz:https://www.doczj.com/doc/534854865.html,/psycopg/ 本文使用windows系统开发,未使用官网版本,选择 psycopg2-2.4.2.win-amd64-py2.7-pg9.0.4-release.exe版,地址: https://www.doczj.com/doc/534854865.html,/s/Cd8pPaw56Ozys 4.PsyCopg的安装 直接exe,根据提示安装即可. ------------------------------------------------ 博主经营一家发饰淘宝店,都是纯手工制作哦,开业冲钻,只为信誉!需要的亲们可以光顾一下!谢谢大家的支持! 店名: 小鱼尼莫手工饰品店 经营: 发饰、头花、发夹、耳环等(手工制作) 网店: https://www.doczj.com/doc/534854865.html,/ --------------------------------------------------------------------- 继续正题... 5.PsyCopg的使用 py文件代码: __author__ = 'qiongmiaoer'
2020年python的面试题整理数据库篇MySQL 198.主键超键候选键外键 主键:数据库表中对存储数据对象予以唯一和完整标识的数据列或属性的组合。一个数据列只能有一个主键,且主键的取值不能缺失,即不能为空值(Null). 超键:在关系中能唯一标识元组的属性集称为关系模式的超键。一个属性可以作为一个超键,多个属性组合在一起也可以作为一个超键。超键包含候选键和主键。 候选键:是最小超键,即没有冗余元素的超键。 外键:在一个表中存在的另一个表的主键称此表的外键。 199.视图的作用,视图可以更改么? 视图是虚拟的表,与包含数据的表不一样,视图只包含使用时动态检索数据的查询;不包含任何列或数据。使用视图可以简化复杂的sql操作,隐藏具体的细节,保护数据;视图创建后,可以使用与表相同的方式利用它们。 视图不能被索引,也不能有关联的触发器或默认值,如果视图本身内有order by则对视图再次order by将被覆盖。 创建视图:create view xxx as xxxxxx 对于某些视图比如未使用联结子查询分组聚集函数Distinct Union等,是可以对其更新的,对视图的更新将对基表进行更新;但是视图主要用于简化检索,保护数据,并不用于更新,而且大部分视图都不可以更新。 200.drop,delete与truncate的区别 drop直接删掉表,truncate删除表中数据,再插入时自增长id又从1开始,delete删除表中数据,可以加where字句。 1.delete 语句执行删除的过程是每次从表中删除一行,并且同时将该行的删除操作作为事务记录在日志中保存以便进行回滚操作。truncate table则一次性地从表中删除所有的数据并不把单独的删除操作记录记入日志保存,删除行是不能恢复的。并且在删除的过程中不会激活与表有关的删除触发器,执行速度快。
python中cursor操作数据库 python 操作数据库,要安装一个Python和数据库交互的包MySQL-python-1.2.2.win32-py2.5.exe,然后我们就可以使用MySQLdb这个包进行数据库操作了。 操作步骤如下: 1、建立数据库连接 importMySQLdb conn=MySQLdb.connect(host="localhost",user="root",passw d="sa",db="mytable") cursor=conn.cursor() 2、执行数据库操作 n=cursor.execute(sql,param) 我们要使用连接对象获得一个cursor对象,接下来,我们会使用cursor提供的方法来进行工作. 这些方法包括两大类:1.执行命令,2.接收返回值 cursor用来执行命令的方法: callproc(self, procname, args):用来执行存储过程,接收的参数为存储过程名和参数列表,返回值为受影响的行数 execute(self, query, args):执行单条sql语句,接收的参数为sql语句本身和使用的参数列表,返回值为受影响的行数 executemany(self, query, args):执行单挑sql语句,但是重复执行参数列表里的参数,返回值为受影响的行数
nextset(self):移动到下一个结果集 cursor用来接收返回值的方法: fetchall(self):接收全部的返回结果行. fetchmany(self, size=None):接收size条返回结果行.如果size 的值大于返回的结果行的数量,则会返回cursor.arraysize条数据. fetchone(self):返回一条结果行. scroll(self, value, mode='relative'):移动指针到某一行.如果mode='relative',则表示从当前所在行移动value条,如果 mode='absolute',则表示从结果集的第一行移动value条. 下面的代码是一个完整的例子. #使用sql语句,这里要接收的参数都用%s占位符.要注意的是,无论你要插入的数据是什么类型,占位符永远都要用%s sql="insert into cdinfo values(%s,%s,%s,%s,%s)" #param应该为tuple或者list param=(title,singer,imgurl,url,alpha) #执行,如果成功,n的值为1 n=cursor.execute(sql,param) #再来执行一个查询的操作 cursor.execute("select * from cdinfo") #我们使用了fetchall这个方法.这样,cds里保存的将会是查询返回的全部结果.每条结果都是一个tuple类型的数据,这些tuple组成了一个tuple
Python与SQLite数据库应用系统 --Python之SQLite数据库应用 作者:XX (XXXX学院,班级:XX班) 摘要:Python自带一个轻量级的关系型数据库SQLite。这一数据库使用SQL语言。SQLite作为后端数据库,可以制作有数据存储需求的工具。Python标准库中的sqlite3提供该数据库的接口。现在作为初学者,我将进行初步的尝试与应用。 关键字:Python;SQLite;应用;数据库;编程 一·Python与SQLite数据库关系学习初步 作为新时代的大学生学会使用网络查询相关信息非常重要,现在经过初步的网络学习以及书籍查询,现在整理如下: (一)创建数据库 注:全文学习范例将以一个简单的关系型数据库为实例,为一个书店存储书的分类和价格。数据库中包含两个表:category用于记录分类,book用于记录某个书的信息。一本书归属于某一个分类,因此book 有一个外键(foreign key),指向catogory表的主键id。 (一)导入Python SQLITE数据库模块 Python2.5之后,内置了SQLite3,成为了内置模块,这给我们省了安装的功夫,只需导入即可~ 在调用connect函数的时候,指定库名称,如果指定的数据库存在就直接打开这个数据库,如果不存在就新创建一个再打开。也可以创建数据库在内存中。 在使用connect()连接数据库后,我就可以通过定位指针cursor,来执行SQL命令:import sqlite3
#test.db is a file in the working directory. conn=sqlite3.connect("test.db") c=conn.cursor() #create tables c.execute('''CREATE TABLE category (id int primary key,sort int,name text)''') c.execute('''CREATE TABLE book (id int primary key, sort int, name text, price real, category int, FOREIGN KEY(category)REFERENCES category(id))''') #save the changes https://www.doczj.com/doc/534854865.html,mit() #close the connection with the database conn.close() SQLite的数据库是一个磁盘上的文件,如上面的test.db,因此整个数据库可以方便的移动或复制。test.db一开始不存在,所以SQLite将自动创建一个新文件。 利用execute()命令,我们执行了两个SQL命令,创建数据库中的两个表。创建完成后,保存并断开数据库连接。 (二)插入数据 上面创建了数据库和表,确立了数据库的抽象结构。下面将在同一数据库中插入数据: import sqlite3 conn=sqlite3.connect("test.db")
#!/ usr/ bin/ env python #-*- encoding: UTF- 8-*- """ 测试MySQL的连接及操作 """ import MySQLdb connstring= "host='localhost',port=3306,user='root',passwd='*****',db='python'" #连接字符串 try: conn= MySQLdb. connect( connstring) except Exception, e: print e break mycursor= conn. cursor() #获取游标,用游标操作数据库 #创建表 ctable="""CREATE TABLE test if not exists(name VARCHAR(30),uid INT(10) primary key)""" mycursor. execute( ctable) #插入数据 insert1="""INSERT INTO test(name='aaa',uid=111)""" insert2="""INSERT INTO test(name='bbb',uid=222)""" insert3="""INSERT INTO test(name='ccc',uid=333)""" inserts=[] inserts[ 0]. append( insert1) inserts[ 1]. append( insert2) inserts[ 2]. append( insert3) for insert in inserts: try: mycursor. execute( insert) except Exception, e: print e #删除数据 #注释掉,下边查询要用到数据,只记录操作 #mycursor. execute("""DELETE FROM test WHERE name='aaa'""") #多表删除 #delmany="""" DELETE FROM table1, table2, table3 WHERE table1. uid= XXX AND table2. uid= table3. uid""" #mycursor.execute(delmany) 继续......
升级至python2.7、mysql-python Linux下安装MySQL 笔记本:python相关 创建于:2011/11/16 10:57更新于:2011/11/16 10:59 URL:https://www.doczj.com/doc/534854865.html,/minglog/archive/2011/4/20.html centos5.x升级至python2.7、mysql-python centos5.3的python版本真让人泪奔,什么时代了还2.4的。自己动手丰衣足食。 1.从官网下载 2.7版本 # wget https://www.doczj.com/doc/534854865.html,/ftp/python/2.7.1/Python-2.7.1.tar.bz2 2.安装 # tar -jxvf Python-2.7.1.tar.bz2 # cd Python-2.7.1 # ./configure (如不指定 --prefix,默认安装在/usr/local/lib/python2.7) # make && make install 3.升级默认版本 # mv python /usr/bin/python24 # ln -s /usr/local/bin/python2.7 /usr/bin/python
4.安装m ysql-python (安装方法不了解可以参看包内的README) # python setup.py build Traceback (most recent call last): File "setup.py", line 5, in
今天在写python操作mysql的时候,出现了一个奇怪的现象,在用python代码执行update 的时候,代码返回已经更新成功,但是数据库表里的字段的值却没有改变,一直没有找到错误的原因,结果寻求身边同事的帮助,问题解决,在此做个记录; MysqlHelper.py 代码如下 #! /usr/bin/python # -*- coding: utf-8 -*- HOST = '127.0.0.1' PORT = 3306 USER = 'test' PASSWORD = 'test123' DBNAME = 'test' CHARSET = 'utf8' def connect(): try: import MySQLdb except ImportError, e: #print e return None try: cxn = MySQLdb.connect(host=HOST, user=USER, passwd=PASSWORD,port=PORT,db=DBNAME,charset=CHARSET) #print cxn return cxn except MySQLdb.Error,e: print "Mysql Error %d: %s" % (e.args[0], e.args[1]) # 插入操作 def insert_one(cur,sql,value): res = cur.execute(sql ,value) # 插入成功,res 返回值为1 if 1 != res : print 'failed' else:
print 'success' def insert_many(cur,sql,values): res = cur.executemany(sql ,values) # 插入成功,res 返回值为1 if 1 != res : print 'failed' else: print 'success' getRC = lambda cur: cur.rowcount if hasattr(cur,'rowcount') else -1 # 更新操作 def update(cur,sql,params): cur.execute(sql , params) return getRC(cur) # 删除操作 def delete(cur,sql,params): cur.execute(sql,params) return getRC(cur) # 只获取一条记录,返回的是一个元组 def fetch_one(cur,sql): count = cur.execute(sql) #print count result = cur.fetchone(); return result # 获取多条数据;返回的是二维元组; def fetch_all(cur,sql): count = cur.execute(sql) #print count results = cur.fetchall(); ''' print results for r in results: print r ''' return results
python操作MySQL数据库 https://www.doczj.com/doc/534854865.html,/rollenholt/archive/2012/05/29/2524327.html https://www.doczj.com/doc/534854865.html,/rollenholt/archive/2012/05/29/2524327.html 2012-05-29 17:41 by Rollen Holt, 216851 阅读, 29 评论, 收藏, 编辑 坚持每天学一点,每天积累一点点,作为自己每天的业余收获,这个文章是我在吃饭的期间写的,利用自己零散的时间学了一下python操作MYSQL,所以整理一下。 我采用的是MySQLdb操作的MYSQL数据库。先来一个简单的例子吧: 请注意修改你的数据库,主机名,用户名,密码。 下面来大致演示一下插入数据,批量插入数据,更新数据的例子吧:
请注意一定要有https://www.doczj.com/doc/534854865.html,mit()这句来提交事务,要不然不能真正的插入数据。 运行之后我的 MySQL 数据库的结果就不上图了。
运行结果就不贴了,太长了。 查询后中文会正确显示,但在数据库中却是乱码的。经过我从网上查找,发现用一个属性有可搞定:
在Python代码 conn = MySQLdb.Connect(host='localhost', user='root', passwd='root', db='python ') 中加一个属性: 改为: conn = MySQLdb.Connect(host='localhost', user='root', passwd='root', db='python',ch arset='utf8') charset是要跟你数据库的编码一样,如果是数据库是gb2312 ,则写charset='gb2312'。 下面贴一下常用的函数: 然后,这个连接对象也提供了对事务操作的支持,标准的方法 commit() 提交 rollback() 回滚 cursor用来执行命令的方法: callproc(self, procname, args):用来执行存储过程,接收的参数为存储过程名和参数列表,返回值为受影响的行数 execute(self, query, args):执行单条sql语句,接收的参数为sql语句本身和使用的参数列表,返回值为受影响的行数 executemany(self, query, args):执行单挑sql语句,但是重复执行参数列表里的参数,返回值为受影响的行数 nextset(self):移动到下一个结果集 cursor用来接收返回值的方法: fetchall(self):接收全部的返回结果行. fetchmany(self, size=None):接收size条返回结果行.如果size的值大于返回的结果行的数量,则会返回cursor.arraysize条数据. fetchone(self):返回一条结果行. scroll(self, value, mode='relative'):移动指针到某一行.如果mode='relative',则表示从当前所在行移动value条,如果mode='absolute',则表示从结果集的第一行移动value条. 参考资料: MySQLdb‘s user guide package MySQLdb ============================================================= ================= 我喜欢程序员,他们单纯、固执、容易体会到成就感;面对压力,能够挑灯夜战不眠不休;面对困难,能够迎难而上挑战自我。他 们也会感到困惑与傍徨,但每个程序员的心中都有一个比尔盖茨或是乔布斯的梦想“用智慧
SQLAlchemy中的Query方法 在SQLAlchemy中执行查询是通过session对象的query方法完成的。query方法非常灵活,你可以根据需要使用不同的查询方式查找数据,下面一一举例。 1.直接通过映射类查找: #Querying user instance for instance in session.query(User).order_by(User.id): print https://www.doczj.com/doc/534854865.html,,instance.fullname 这种方法只要在query方法中,将映射类作为参数,就可以查询出这个映射类代表的数据库表中的数据。其相当于下面的SQL语句: SELECT users.id AS users_id, https://www.doczj.com/doc/534854865.html, AS users_name, users.fullname AS users_fullname, users.password AS users_password FROM users ORDER BY users.id 2.通过映射类的属性字段查询: #Querying by ORM-instrument for name,fullname in session.query(https://www.doczj.com/doc/534854865.html,,User.fullname): print name,fullname 这种方法指定了查询的具体字段,而不是像第一种方法那样把映射类的所有字段都查询出来,其相当于执行了下面的SQL语句: SELECT https://www.doczj.com/doc/534854865.html, AS users_name, users.fullname AS users_fullname FROM users 3.query查询的结果是保存在一个元组中的,所以我们可以在query中指定返回整个的映射类对象和其中的部分属性字段: #Querying as a Python object for row in session.query(User,https://www.doczj.com/doc/534854865.html,).all(): print https://www.doczj.com/doc/534854865.html,er,https://www.doczj.com/doc/534854865.html, 这种查询方法可以返回一个User对象以及它的name属性字段的值,其相当于执行了下面的SQL语句: SELECT users.id AS users_id, https://www.doczj.com/doc/534854865.html, AS users_name, users.fullname AS users_fullname, users.password AS users_password FROM users 其输出结果为一个元组和一个字符串: <user("ed","Ed Jones","f8x902")> ed <user("Wendy","Wendy Williams","foobar")> Wendy <user("Marry","Marry Contrary","xxg527")> Marry <user("Fred","Fred Flinstone","blah")> Fred 4.我们还可以给返回的结果起一个别名,或者叫标签: #Querying labeled
本文介绍了Python操作MYSQL、执行SQL语句、获取结果集、遍历结果集、取得某个字段、获取表字段名、将图片插入数据库、执行事务等各种代码实例和详细介绍,代码居多,是一桌丰盛唯美的代码大餐。 实例1、取得MYSQL的版本 在windows环境下安装mysql模块用于python开发,请见我的另一篇文章: MySQL-python Windows下EXE安装文件下载 # -*- coding: UTF-8 -*- #安装MYSQL DB for python import MySQLdb as mdb con = None try: #连接mysql的方法:connect('ip','user','password','dbname') con = mdb.connect('localhost', 'root', 'root', 'test'); #所有的查询,都在连接con的一个模块cursor上面运行的 cur = con.cursor() #执行一个查询 cur.execute("SELECT VERSION()") #取得上个查询的结果,是单个结果 data = cur.fetchone() print "Database version : %s " % data finally: if con: #无论如何,连接记得关闭 con.close() 执行结果: Database version : 5.5.25 实例2、创建一个表并且插入数据 主要还是在cursor上面执行execute方法来进行,请见源码: # -*- coding: UTF-8 -*- # 来源于https://www.doczj.com/doc/534854865.html,总结整理 import MySQLdb as mdb import sys
一、首先下载驱动:(cx_Oracle) https://www.doczj.com/doc/534854865.html,/crew/atuining/cx_Oracle/ 不过要注意一下版本,根据你的情况加以选择。 二、安装: 首先配置oracle_home环境变量 执行那个exe安装程序就可以了,它会copy一个cx_Oracle.pyd到Libsite-packages目录下。如果是linux,执行 复制代码代码如下: python setup.py build python setup.py install 三、执行一段测试程序: 复制代码代码如下: import cx_Oracle con = cx_Oracle.connect( "xjtu_test", "37343734","xjtu.world") cursor = con.cursor() cursor.close() con.close() 里边connect中的3个参数从左到右分别是:user, pass, TNS。 那个TNS可以用Oracle客户端工具中的Net Configuration Assistant来配置。 四、具体的cx_Oracle API可以参考: https://www.doczj.com/doc/534854865.html,/crew/atuining/cx_Oracle/html/cx_Oracle.html 五、示例: 复制代码代码如下: >>> import cx_Oracle >>> conn=cx_Oracle.connect ('scott/tiger@oratest') >>> curs=conn.cursor () >>> sql='select * from emp' >>> rr=curs.execute (sql) >>> row=curs.fetchone() >>> row (7369, 'SMITH', 'CLERK', 7902, datetime.datetime(1980, 12, 17, 0, 0), 800.0, None, 20) >>> while row: (ID,NAME)=(row[0],row[1]) row=curs.fetchone ()
数据库的操作在目前的 Python 里面已经变得十分的好用,因为有了一套 API 标准。本文下面就讲讲如何使用这套API。它包括以下部分: ?模块接口 ?连接对象 ?游标对象 ?数据类型与定义 ?例子 一、模块接口 connect( parameters... ) 其中的参数格式如下: dsn 数据源名称 user 用户名(可选) password 密码(可选) host 主机名(可选) database 数据库名(可选) 举个例子: connect(dsn=''myhost:MYDB'',user=''guido'',password=''234$'') 或者 connect(''218.244.20.22'',''username'',''password'',''databas ename'') 此标准规定了以下的一些全局变量, apilevel: 表示 DB-API 的版本,分 1.0 和 2.0 。如果没有定义,则默认为 1.0。threadsafety: 0 Threads may not share the module. 1 Threads may share the module, but not connections.
2 Threads may share the module and connections. 3 Threads may share the module, connections and cursors. paramstyle: 用于表示参数的传递方法,分为以下五种: ''qmark'' 问号标识风格. e.g ''... WHERE name=?'' ''numeric'' 数字,占位符风格. e.g ''... WHERE name=:1'' ''named'' 命名风格. e.g ''WHERE name=:name'' ''format'' ANSI C printf风格. e.g ''... WHERE name=%s'' ''pyformat'' Python扩展表示法. e.g ''... WHERE name=%(name)s'' 异常类: StandardError |__Warning |__Error |__InterfaceError |__DatabaseError |__DataError |__OperationalError |__IntegerityError |__InternalError |__ProgrammingError |__NotSupportedError 二、连接对象 连接对象包含如下方法: .close() 关闭连接 .commit() 用于事务处理里面的提交操作 .rollback() 用于事务处理里面的回滚操作
数据库连接 # coding:gbk ''' Created on 2010-7-15 @author: Administrator ''' import cx_Oracle dsn=cx_Oracle.makedsn("150.150.1.45",1521,"dx") conn=cx_Oracle.connect("test","123",dsn) print"连接oracle成功!" try: cur=conn.cursor() sql="select * from portt_type" rr=cur.execute(sql) row=cur.fetchall() for x in row: print"记录",x[0],x[1] cur.close() except Exception,e: print e else: print"一切正常" finally: conn.close() print"连接关闭" 数据库操作 # coding:gbk ''' Created on 2010-7-15 @author: Administrator ''' import cx_Oracle
#用户名,密码,服务名 db=cx_Oracle.connect("user","pass","tns_name") c=db.cursor(); #建表 c.execute("create table test(a int,b varchar2(100))") #建序列 c.execute("create sequence stest") #插入数据 c.execute("insert into test(a,b) values(stest.nextval,'Python')") c.execute("insert into test(a,b) values(stest.nextval,'Oracle')") #检索插入的数据 sql = "select * from test" r = c.execute(sql) row = c.fetchone() while row: (a,b)=(row[0],row[1]) print a,b row=c.fetchone() #删除插入的数据 sql = "delete from test where a=1" c.execute(sql) #检索