问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

Python 中用 Tkinter GUI编程

发布网友 发布时间:2022-04-24 06:39

我来回答

1个回答

热心网友 时间:2022-05-02 22:29

可以使用sqlite,下面是使用方法。

导入Python SQLITE数据库模块

     Python2.5之后,内置了SQLite3,成为了内置模块,这给我们省了安装的功夫,只需导入即可~

import sqlite3


2. 创建/打开数据库 


     在调用connect函数的时候,指定库名称,如果指定的数据库存在就直接打开这个数据库,如果不存在就新创建一个再打开。


cx = sqlite3.connect("E:/test.db")

     也可以创建数据库在内存中。

con = sqlite3.connect(":memory:")

 

3.数据库连接对象


    打开数据库时返回的对象cx就是一个数据库连接对象,它可以有以下操作:


commit()--事务提交    


rollback()--事务回滚   

close()--关闭一个数据库连接   

cursor()--创建一个游标 


    关于commit(),如果isolation_level隔离级别默认,那么每次对数据库的操作,都需要使用该命令,你也可以设置isolation_level=None,这样就变为自动提交模式。

 

4.使用游标查询数据库 


    我们需要使用游标对象SQL语句查询数据库,获得查询对象。 通过以下方法来定义一个游标。


cu=cx.cursor()

 

     游标对象有以下的操作:

execute()--执行sql语句   

executemany--执行多条sql语句   

close()--关闭游标   

fetchone()--从结果中取一条记录,并将游标指向下一条记录   

fetchmany()--从结果中取多条记录   

fetchall()--从结果中取出所有记录   

scroll()--游标滚动  


1. 建表

cu.execute("create table catalog (id integer primary key,pid integer,name varchar(10) UNIQUE,nickname text NULL)")


上面语句创建了一个叫catalog的表,它有一个主键id,一个pid,和一个name,name是不可以重复的,以及一个nickname默认为NULL。


2. 插入数据 


请注意避免以下写法:


# Never do this -- insecure 会导致注入攻击


pid=200

c.execute("... where pid = '%s'" % pid)

正确的做法如下,如果t只是单个数值,也要采用t=(n,)的形式,因为元组是不可变的。 

 

for t in[(0,10,'abc','Yu'),(1,20,'cba','Xu')]:

    cx.execute("insert into catalog values (?,?,?,?)", t)

简单的插入两行数据,不过需要提醒的是,只有提交了之后,才能生效.我们使用数据库连接对象cx来进行提交commit和回滚rollback操作.

 

cx.commit()


3.查询

cu.execute("select * from catalog") 


要提取查询到的数据,使用游标的fetch函数,如:


In [10]: cu.fetchall()

Out[10]: [(0, 10, u'abc', u'Yu'), (1, 20, u'cba', u'Xu')]

如果我们使用cu.fetchone(),则首先返回列表中的第一项,再次使用,则返回第二项,依次下去.


4.修改

In [12]: cu.execute("update catalog set name='Boy' where id = 0")

In [13]: cx.commit()

注意,修改数据以后提交


5.删除


cu.execute("delete from catalog where id = 1")  

cx.commit() 


6.使用中文

请先确定你的IDE或者系统默认编码是utf-8,并且在中文前加上u 


x=u'鱼'

cu.execute("update catalog set name=? where id = 0",x)

cu.execute("select * from catalog")

cu.fetchall()

[(0, 10, u'\u9c7c', u'Yu'), (1, 20, u'cba', u'Xu')]

如果要显示出中文字体,那需要依次打印出每个字符串


In [26]: for item in cu.fetchall():

   ....:     for element in item:

   ....:         print element,

   ....:     print

   ....: 

0 10 鱼 Yu

1 20 cba Xu


7.Row类型

 

Row提供了基于索引和基于名字大小写敏感的方式来访问列而几乎没有内存开销。 原文如下:

 

sqlite3.Row provides both index-based and case-insensitive name-based access to columns with almost no memory overhead. It will probably be better than your own custom dictionary-based approach or even a db_row based solution.

 

Row对象的详细介绍


class sqlite3.Row

A Row instance serves as a highly optimized row_factory for Connection objects. It tries to mimic a tuple in most of its features.


It supports mapping access by column name and index, iteration, representation, equality testing and len().


If two Row objects have exactly the same columns and their members are equal, they compare equal.


Changed in version 2.6: Added iteration and equality (hashability).


keys()

This method returns a tuple of column names. Immediately after a query, it is the first member of each tuple in Cursor.description.


New in version 2.6.


下面举例说明


In [30]: cx.row_factory = sqlite3.Row


In [31]: c = cx.cursor()


In [32]: c.execute('select * from catalog')

Out[32]: <sqlite3.Cursor object at 0x05666680>


In [33]: r = c.fetchone()


In [34]: type(r)

Out[34]: <type 'sqlite3.Row'>


In [35]: r

Out[35]: <sqlite3.Row object at 0x05348980>


In [36]: print r

(0, 10, u'\u9c7c', u'Yu')


In [37]: len(r)

Out[37]: 4


In [39]: r[2]            #使用索引查询

Out[39]: u'\u9c7c'


In [41]: r.keys()

Out[41]: ['id', 'pid', 'name', 'nickname']


In [42]: for e in r:

   ....:     print e,

   ....: 

0 10 鱼 Yu


 使用列的关键词查询

In [43]: r['id']

Out[43]: 0


In [44]: r['name']

Out[44]: u'\u9c7c'

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
为什么来大姨妈胸会胀 少儿学什么舞蹈 青年学什么舞蹈好 成年人学什么舞蹈 福州企业最低工资标准 2013年厦门的底薪是多少 生产要素的需求有哪些性质 生产要素的需求有何特点? 什么是生产要素需求 微观经济学要素需求什么是条件要素需求?它和要素需求有什么不同?_百度... Python 如何用tkinter读取本地网页并显示在软件界面内? python中用tkinter模块怎么打开文件? python用tkinter创建一个登录界面 “python”如何用“tkinter”模块打开文件? 5号充电电池的容量多少? 五号充电电池2700毫安跟2000,1300 有什么区别? 充电电池5号的一般买多少毫安比较耐用些? 那种能用5号电池给手机充电的东西叫什么?5号电池一般有多少毫安? 5号的可充电电池,现在最大容量是多少的? 5号充电电池最大是多少毫安时? 营销管培生是干什么的 成为希尔顿或万豪的管培生有什么要求? 联合利华的管培生有什么要求呢? 观适健蓝莓咀嚼片儿童可以吃吗? 管培生是什么意思?和普通实习生有区别吗? 小孩子能吃蓝莓片吗? 银行管理培训生需要具备什么条件? 职场菜鸟求问外企管培生是什么意思?可以考虑吗? 我家的孩子14个月了可以吃蓝莓吗 猎头顾问管理培训生? python 用Tkinter.Text设置了文本框之后如何获取输入内容 python的tkinter如何获取输入框中的值 如何在python中导入Tkinter python如何用像素规定tkinter模块里label或button的大小 Python中tkinter包如何提取文本框文字到函数之外? 关于微笑的英语名言 谁能告诉我关于微笑或放松或生活态度这方面的好的英文句子 含有smile的英语句子 关于爱情和微笑的句子【英语】 给老师的毕业赠言(英文) 表示笑的英语词语 给英语老师的毕业赠言 一篇关于微笑的英语小短文~! 给英语老师的毕业赠言该怎么写? 微笑宝贝英语怎说说 写给英语老师的毕业赠言,要有点英语化的,掺点英语 关于微笑的英语演讲 写给英语老师的毕业赠言要体现出它的职业 用微笑、记住、世界组成的英文句子 英语毕业赠言给老师的!!!