赞
踩
从Python3.x版本开始,在标准库中已经内置了SQLlite3模块,它可以支持SQLite3数据库的访问和相关的数据库操作。在需要操作SQLite3数据库数据时,只须在程序中导入SQLite3模块即可。Python语言操作SQLite3数据库的基本流程如下所示。
使用sqlite3模块的connect方法来创建/打开数据库,需要指定数据库路径,不存在则创建一个新的数据库。
con=sqlite3.connect(‘e:/sqllitedb/first.db’)
下面实例代码演示使用SQLite3创建数据库的过程。
【示例】使用SQLite3创建表
#导入sqllite3模块 import sqlite3 #1.硬盘上创建连接 con = sqlite3.connect('e:/sqlitedb/first.db') #获取cursor对象 cur = con.cursor() #执行sql创建表 sql = 'create table t_person(pno INTEGER PRIMARY KEY AUTOINCREMENT ,pname varchar(30) NOT NULL ,age INTEGER)' try: cur.execute(sql) except Exception as e: print(e) print('创建表失败') finally: # 关闭游标 cur.close() # 关闭连接 con.close()
调用游标对象的execute执行插入的sql,使用executemany()执行多条sql语句,使用executmany()比循环使用excute()执行多条sql语句效率高。
【示例】使用SQLite3插入一条数据
#导入sqllite3模块 import sqlite3 #1.硬盘上创建连接 con = sqlite3.connect('e:/sqlitedb/first.db') #获取cursor对象 cur = con.cursor() #执行sql创建表 sql = 'insert into t_person(pname,age) values(?,?)' try: cur.execute(sql,('张三',23)) #提交事务 con.commit() print('插入成功') except Exception as e: print(e) print('插入失败') con.rollback() finally: # 关闭游标 cur.close() # 关闭连接 con.close()
【示例】使用SQLite3插入多条数据
#导入sqllite3模块 import sqlite3 #1.硬盘上创建连接 con = sqlite3.connect('e:/sqlitedb/first.db') #获取cursor对象 cur = con.cursor() try: #执行sql创建表 sql = 'insert into t_person(pname,age) values(?,?)' cur.executemany(sql, [('张三', 23), ('李四', 25), ('小红', 24), ('小李', 12)]) #提交事务 con.commit() print('插入成功') except Exception as e: print('插入失败') con.rollback() finally: # 关闭游标 cur.close() # 关闭连接 con.close()
查询数据,游标对象提供了fetchall()和fetchone()方法 。fetchall()方法获取所有数据,返回一个列表。fetchone()方法获取其中一个结果,返回一个元组。
【示例】fetchall()查询所有数据
#导入sqllite3模块 import sqlite3 #1.硬盘上创建连接 con = sqlite3.connect('e:/sqlitedb/first.db') #获取cursor对象 cur = con.cursor() #执行sql创建表 sql = 'select * from t_person' try: cur.execute(sql) # 获取所有数据 person_all = cur.fetchall() # print(person_all) # 遍历 for p in person_all: print(p) except Exception as e: print(e) print('查询失败') finally: # 关闭游标 cur.close() # 关闭连接 con.close()
执行结果如下图:
【示例】fetchone()查询一条数据
#导入sqllite3模块 import sqlite3 # 1.硬盘上创建连接 con = sqlite3.connect('e:/sqlitedb/first.db') # 获取cursor对象 cur = con.cursor() # 执行sql创建表 sql = 'select * from t_person' try: cur.execute(sql) # 获取一条数据 person = cur.fetchone() print(person) except Exception as e: print(e) print('查询失败') finally: # 关闭游标 cur.close() # 关闭连接 con.close()
执行结果如下图:
【示例】修改数据
#导入sqllite3模块 import sqlite3 #1.硬盘上创建连接 con=sqlite3.connect('e:/sqlitedb/first.db') #获取cursor对象 cur=con.cursor() try: #执行sql创建表 update_sql = 'update t_person set pname=? where pno=?' cur.execute(update_sql, ('小明', 1)) #提交事务 con.commit() print('修改成功') except Exception as e: print(e) print('修改失败') con.rollback() finally: # 关闭游标 cur.close() # 关闭连接 con.close()
执行结果如下图:
【示例】删除数据
#导入sqllite3模块 import sqlite3 #1.硬盘上创建连接 con=sqlite3.connect('e:/sqlitedb/first.db') #获取cursor对象 cur=con.cursor() #执行sql创建表 delete_sql = 'delete from t_person where pno=?' try: cur.execute(delete_sql, (2,)) #提交事务 con.commit() print('删除成功') except Exception as e: print(e) print('删除失败') con.rollback() finally: # 关闭游标 cur.close() # 关闭连接 con.close()
执行结果如下图:
在上述实例代码中,首先定义查询所有数据、插入数据、修改数据、删除数据的方法。然后,定义主方法中依次建立连接,获取连接的cursor,通过cursor的execute()等方法来执行SQL语句,调用插入记录、更加记录、删除记录的方法。
如果大家安装MySQL只是为了个人的学习和软件开发,那么安装免费的社区版即可。首先我们要进入MySQL的官网:https://www.mysql.com/,如下图所示。
然后点击DOWNLOADS导航栏,就会默认进入到MySQL的Enterprise(企业版)产品下载页面,所以还需要我们点击Community(社区版),切换到社区版的下载页面,最后点击MySQL Community Server下边的DOWNLOAD按钮即可进入MySQL数据库的下载页面。操作如下图所示。
进入MySQL的数据库下载界面后,首先在“Select Operating System”下拉菜单中选择“Microsoft Windows”平台,然后进入MySQL Installer MSI下载页面,如下图所示。
在MSI下载页面,按照下图所示,选择正确的文件下载,此时MySQL官网会建议你注册或者登陆账号然后下载,当然我们也可以选择“No thanks, just start my download.”直接下载。
根据下载路径找到下载好的MySQL安装程序(mysql-installer-community-8.0.12.0.msi),具体步骤如下所示。
完成上述4个步骤后,我们的MySQL终于安装成功了,剩下的就是对其进行配置,我们将在下一小节中讲述。
安装完成后,还需要设置MySQL的各项参数才能正常使用。我们仍然使用图形化界面对其进行配置,具体步骤如下所示。
进入“Type and Networking”界面后,会看到两个选项“Standalone MySQL Server / Classic MySQL Replication”和“InnoDB Cluster Sandbox Test Setup(for testing only)”。
如果要运行独立的MySQL服务器可以选择前者,以便稍后配置经典的MySQL复制,使用该选项,用户可以手动配置复制设置,并在需要时提供自己的高可用性解决方案。
而后者是InnoDB集群沙箱测试设置,仅用于测试。
我们要选择的是“Standalone MySQL Server / Classic MySQL Replication”选项,然后点击“Next”按钮即可,如下图所示。
服务器配置类型“Config Type”选择“Development machine”,不同的选择将决定系统为MySQL服务器实例分配资源的大小,“Development machine”占用的内存是最少的;连接方式保持默认的TCP/IP,端口号也保持默认的3306即可;点击“Next”按钮。
在配置Windows服务时,需要以下几部操作:勾选“Configure MySQL Server as a Windows Service”选项,将MySQL服务器配置为Windows服务;取消“Start the MySQL Server at System Startup”选项前边的“√”(该选项是设置是否开机自启动MySQL服务,在此我们选择开机不启动,大家也可以根据自己的需要来选择);勾选“Standard System Account”选项,该选项是标准系统账户,推荐使用该账户;点击“Next”按钮,如下图所示。
PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务器的一个库,Python2中则使用mysqldb。
在使用 PyMySQL 之前,我们需要确保 PyMySQL 已安装。如果还未安装,我们可以使用以下命令安装最新版的 PyMySQL
pip install PyMySQL
如果使用命令无法安装,需要下载PyMySQL-0.9.3-py2.py3-none-any.whl文件,进行安装。
4. windows+R打开doc窗口,进入PyMySQL-0.9.3-py2.py3-none-any.whl文件所在目录,执行如命令进行安装。
pip install PyMySQL-0.9.3-py2.py3-none-any.whl
在Python程序中,可以使用execute()在数据库中创建一个新表。下面的实例代码演示了在PyMySQL数据库中创建新表student的过程。
【示例】创建表student
import pymysql try: #创建与数据库的连接 db=pymysql.connect('localhost','root','root','testdb') #创建游标对象cursor cursor=db.cursor() #使用execute()方法执行sql,如果表存在则删除 cursor.execute('drop table if EXISTS student') #创建表的sql sql=''' create table student( sno int(8) primary key auto_increment, sname varchar(30) not null, sex varchar(5) , age int(2), score float(3,1) ) ''' cursor.execute(sql) except: print('创建表失败') finally: #关闭数据库连接 db.close()
在Python程序中,可以使用SQL语句向数据库中插入新的数据信息。
【示例】向student表中插入数据信息
import pymysql #创建与数据库的连接 db=pymysql.connect('localhost','root','root','testdb') #创建游标对象cursor cursor=db.cursor() #插入sql语句 sql=''' insert into student(sname,sex,age,score) values(%s,%s,%s,%s) ''' try: #执行sql语句 cursor.execute(sql,('李四','woman',25,99.6)) #提交事务 db.commit() print('插入成功') except Exception as e: print(e) #如果出现异常,回滚 db.rollback() print('插入失败') finally: #关闭数据库连接 db.close()
【示例】向student表同时插入多条数据
import pymysql #创建与数据库的连接 db=pymysql.connect('localhost','root','root','testdb') #创建游标对象cursor cursor=db.cursor() #插入sql语句 sql=''' insert into student(sname,sex,age,score) values(%s,%s,%s,%s) ''' args=[('王五','woman',22,98.6),('赵六','man',21,99.1)] try: #执行sql语句 cursor.executemany(sql,args) #提交事务 db.commit() print('插入成功') except Exception as e: print(e) #如果出现异常,回滚 db.rollback() print('插入失败') finally: #关闭数据库连接 db.close()
Python查询Mysql使用 fetchone() 方法获取单条数据, 使用fetchall() 方法获取多条数据。
【示例】查询学生 年龄大于等于23的所有学生信息
import pymysql #创建与数据库的连接 db=pymysql.connect('localhost','root','root','testdb') #创建游标对象cursor cursor=db.cursor() #查询年龄大于等于23的所有学生信息 sql='select * from student where age>=23' try: #执行sql cursor.execute(sql) #获取查询结果 results=cursor.fetchall() for row in results: sno=row[0] sname=row[1] sex=row[2] age=row[3] score=row[4] #输出 print('sno:',sno,'sname:',sname,'sex:',sex,'age:',age,'score:',score) except Exception as e: print(e) print('查询失败') finally: db.close()
在Python程序中,可以使用update语句更新数据库中数据信息。
【示例】更新数据库中的数据
import pymysql #创建与数据库的连接 db=pymysql.connect('localhost','root','root','testdb') #创建游标对象cursor cursor=db.cursor() #将sno=5的学生成绩修改为99.5 sql='update student set score=%s where sno=%s' try: #执行sql cursor.execute(sql,(99.5,5)) #提交数据 db.commit() print('修改成功') except: print('修改失败') db.rollback() finally: db.close()
在Python程序中,可以使用delete语句删除数据库中的数据信息
【示例】删除年龄小于22的学生
import pymysql #创建与数据库的连接 db=pymysql.connect('localhost','root','root','testdb') #创建游标对象cursor cursor=db.cursor() #删除sql sql='delete from student where age < 22' try: #执行sql语句 cursor.execute(sql) #提交事务 db.commit() print('删除数据成功') except: db.rollback() print('删除数据失败') finally: #关闭连接 db.close()
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。