怎么创建万维网网站,python做网站后台,笛东景观设计公司官网,wordpress 字体不一样Win11查看安装的Python路径及安装的库
Python PEP8 代码规范常见问题及解决方案
Python3操作MySQL8.XX创建表|CRUD基本操作
Python3操作SQLite3创建表主键自增长|CRUD基本操作
anaconda3最新版安装|使用详情|Error: Please select a valid Python interpreter
Python函数绘… Win11查看安装的Python路径及安装的库
Python PEP8 代码规范常见问题及解决方案
Python3操作MySQL8.XX创建表|CRUD基本操作
Python3操作SQLite3创建表主键自增长|CRUD基本操作
anaconda3最新版安装|使用详情|Error: Please select a valid Python interpreter
Python函数绘图与高等代数互融实例(一):正弦函数与余弦函数
Python函数绘图与高等代数互融实例(二):闪点函数
Python函数绘图与高等代数互融实例(三):设置X|Y轴|网格线
Python函数绘图与高等代数互融实例(四):设置X|Y轴参考线|参考区域
Python函数绘图与高等代数互融实例(五): 则线图综合案例 一: SQLite3创建表时主键自增长 1: sqlite支持建立自增主键
create table t_user
(id integer primary key autoincrement,age int(2), name varchar(10),address varchar(100)
) 2: 联合主键 create table t_user ( address_id varchar(20), id integer primary key autoincrement, age int(2), name varchar(10), address varchar(100), primary key (id,address_id ) ) 注意在创建联合主键时主键创建要放在所有字段最后面否则也会创建失败 二: Python使用SQLite3创建表 import sqlite3由于Python已经内置了SQLite3,直接引入SQLite3模块即可使用
# 连接到数据库SQLite
# 数据库文件时data.db,如果文件不存在,则自动在当前目录下面创建conn sqlite3.connect(data.db)
# 创建一个游标对象Cursor
cursor conn.cursor()
# 执行一条建表语句,创建t_user表
try:cursor.execute(create table t_user (id INTEGER PRIMARY KEY AUTOINCREMENT, age int(2), name varchar(10),address varchar(100)))# 提交conn.commit()
except Exception as err:conn.rollback()print(error: , err)
finally:print(执行finally模块: , 关闭系统资源)# 关闭游标cursor.close()# 关闭Connection对象conn.close()三: 批量插入主键自增长数据主键的赋值 import sqlite3对数据库SQLite3执行CRUD操作
conn sqlite3.connect(data.db)cursor conn.cursor()
param [(None, 20, 老王, 北京市海淀区中关村软件园创新中心1-1001),(None, 23, 老李, 北京市朝阳区中关村软件园创新中心1-1011),(None, 22, 老高, 北京市昌平区中关村软件园创新中心1-1021),(None, 25, 老函, 北京市密云区中关村软件园创新中心1-1031),(None, 80, 老彪, 北京市房山区中关村软件园创新中心1-1041),(None, 90, 老表, 北京市丰台区中关村软件园创新中心1-1051)]
try:# 批量插入数据sql insert into t_user values(?,?,?,?)cursor.executemany(sql, param)conn.commit()
except Exception as err:print(插入数据异常: , err)conn.rollback()
finally:cursor.execute(select * from t_user)resultSet cursor.fetchall()for item in resultSet:print(数据库表(t_user)数据集: , item)# 释放资源,关闭游标cursor.close()# 关闭连接conn.close()四: 查看执行结果 D:\program_file_worker\anaconda\python.exe D:\program_file_worker\python_source_work\SSO\grammar\ClassGrammarExecutorCRUD.py 数据库表(t_user)数据集: (1, 20, 老王, 北京市海淀区中关村软件园创新中心1-1001) 数据库表(t_user)数据集: (2, 23, 老李, 北京市朝阳区中关村软件园创新中心1-1011) 数据库表(t_user)数据集: (3, 22, 老高, 北京市昌平区中关村软件园创新中心1-1021) 数据库表(t_user)数据集: (4, 25, 老函, 北京市密云区中关村软件园创新中心1-1031) 数据库表(t_user)数据集: (5, 80, 老彪, 北京市房山区中关村软件园创新中心1-1041) 数据库表(t_user)数据集: (6, 90, 老表, 北京市丰台区中关村软件园创新中心1-1051) 数据库表(t_user)数据集: (7, 20, 老王, 北京市海淀区中关村软件园创新中心1-1001) 数据库表(t_user)数据集: (8, 23, 老李, 北京市朝阳区中关村软件园创新中心1-1011) 数据库表(t_user)数据集: (9, 22, 老高, 北京市昌平区中关村软件园创新中心1-1021) 数据库表(t_user)数据集: (10, 25, 老函, 北京市密云区中关村软件园创新中心1-1031) 数据库表(t_user)数据集: (11, 80, 老彪, 北京市房山区中关村软件园创新中心1-1041) 数据库表(t_user)数据集: (12, 90, 老表, 北京市丰台区中关村软件园创新中心1-1051) 数据库表(t_user)数据集: (13, 20, 老王, 北京市海淀区中关村软件园创新中心1-1001) 数据库表(t_user)数据集: (14, 23, 老李, 北京市朝阳区中关村软件园创新中心1-1011) 数据库表(t_user)数据集: (15, 22, 老高, 北京市昌平区中关村软件园创新中心1-1021) 数据库表(t_user)数据集: (16, 25, 老函, 北京市密云区中关村软件园创新中心1-1031) 数据库表(t_user)数据集: (17, 80, 老彪, 北京市房山区中关村软件园创新中心1-1041) 数据库表(t_user)数据集: (18, 90, 老表, 北京市丰台区中关村软件园创新中心1-1051) 数据库表(t_user)数据集: (19, 20, 老王, 北京市海淀区中关村软件园创新中心1-1001) 数据库表(t_user)数据集: (20, 23, 老李, 北京市朝阳区中关村软件园创新中心1-1011) 数据库表(t_user)数据集: (21, 22, 老高, 北京市昌平区中关村软件园创新中心1-1021) 数据库表(t_user)数据集: (22, 25, 老函, 北京市密云区中关村软件园创新中心1-1031) 数据库表(t_user)数据集: (23, 80, 老彪, 北京市房山区中关村软件园创新中心1-1041) 数据库表(t_user)数据集: (24, 90, 老表, 北京市丰台区中关村软件园创新中心1-1051) Process finished with exit code 0 五SQLite3批量插入的方式 通过Python脚本向sqlite3数据库批量插入数据这里记录两种批量插入数据的方式
1、通过execute用for语句循环
#导入sqlite3包
import sqlite3
# 创建数据库连接
conn sqlite3.connect(data.db)
#获取一个游标对象
cursorconn.cursor()
#设置参数ifor语句循环
for i in range(1,10):paramstr(i)sqlinsert into t_user values(?,?,?,?)cursor.execute(sql,param)conn.commit()
#关闭连接
conn.close()
cursor.close()2、通过executemany数据的格式必须为list[tuple(),tuple(),tuple()]或者tuple(tuple(),tuple(),tuple())import sqlite3
# 打开数据库连接
conn sqlite3.connect(data.db)
# 使用cursor()方法获取操作游标
cursor conn.cursor()
#批量插入数据;mysql使用% sqlite使用?
sqlinsert into t_user values(?,?,?,?)
#每一个值都作为一个元组整个参数集作为一个元组
param((111111,haha,13),(22222,hehe,34))
#或者每一个值作为元组整个参数集作为list param[(111111,haha,13),(22222,hehe,34)]
#使用executemany方法批量插入数据
cursor.executemany(sql,param)
#提交
conn.commit()
#关闭
conn.close()
cursor.close()
三、cursor执行命令的方法
1、 callproc(self, procname, args):用来执行存储过程,接收的参数为存储过程名和参数列表,返回值为受影响的行数
2、 execute(self, query, args):执行单条sql语句,接收的参数为sql语句本身和使用的参数列表,返回值为受影响的行数
3、executemany(self, query, args):执行单挑sql语句,但是重复执行参数列表里的参数,返回值为受影响的行数
4、nextset(self):移动到下一个结果集
四、cursor接受返回值的方法
1、 fetchall(self):接收全部的返回结果行.
2、 fetchmany(self, sizeNone):接收size条返回结果行.如果size的值大于返回的结果行的数量,则会返回cursor.arraysize条数据.
3、 fetchone(self):返回一条结果行.
4、 scroll(self, value, mode‘relative’):移动指针到某一行.如果mode‘relative’,则表示从当前所在行移动value条,如果mode‘absolute’,则表示从结果集的第一 行移动value条
#执行查询的操作cursor.execute(select * from cdinfo)
#用fetcall方法获取查询返回的全部结果将结果保存到tup每条结果都是元组类型所有的元组组成了一个元组集tupcursor.fetchall()printtup#输出整个结果 print tup[0][3]#输出元组集中第一个元组的第四个元素 六: Python查询SQLite3数据库的三种方式 import sqlite3Python提供了三种查询数据的函数:fetchone(): 获取查询结果集中的下一条记录fetchmany(size)获取指定数量的记录fetchall():获取结果集中的所有记录conn sqlite3.connect(data.db)
cursor conn.cursor()
userId 5
try:sql select * from t_usercursor.execute(sql)# 获取查询结果resultOne cursor.fetchone()print(resultOne: , resultOne)resultTwo cursor.fetchmany(20)print(resultTwo: , resultTwo)resultAll cursor.fetchall()print(resultAll: , resultAll)# 使用占位符?,可以避免SQL注入的风险,元组作为参数传值,元组中只有一个元素时,最后的逗号不能去掉resultWhere cursor.execute(select * from t_user where id ?, (userId,))print()print(resultWhere: , resultWhere.fetchall())
except Exception as err:print(系统异常: , err)finally:cursor.close()conn.close()七 执行结果 D:\program_file_worker\anaconda\python.exe D:\program_file_worker\python_source_work\SSO\grammar\ClassGrammarBatchOperation.py resultOne: (1, 20, 老王, 北京市海淀区中关村软件园创新中心1-1001) resultTwo: [(2, 23, 老李, 北京市朝阳区中关村软件园创新中心1-1011), (3, 22, 老高, 北京市昌平区中关村软件园创新中心1-1021), (4, 25, 老函, 北京市密云区中关村软件园创新中心1-1031), (5, 80, 老彪, 北京市房山区中关村软件园创新中心1-1041), (6, 90, 老表, 北京市丰台区中关村软件园创新中心1-1051), (7, 20, 老王, 北京市海淀区中关村软件园创新中心1-1001), (8, 23, 老李, 北京市朝阳区中关村软件园创新中心1-1011), (9, 22, 老高, 北京市昌平区中关村软件园创新中心1-1021), (10, 25, 老函, 北京市密云区中关村软件园创新中心1-1031), (11, 80, 老彪, 北京市房山区中关村软件园创新中心1-1041), (12, 90, 老表, 北京市丰台区中关村软件园创新中心1-1051), (13, 20, 老王, 北京市海淀区中关村软件园创新中心1-1001), (14, 23, 老李, 北京市朝阳区中关村软件园创新中心1-1011), (15, 22, 老高, 北京市昌平区中关村软件园创新中心1-1021), (16, 25, 老函, 北京市密云区中关村软件园创新中心1-1031), (17, 80, 老彪, 北京市房山区中关村软件园创新中心1-1041), (18, 90, 老表, 北京市丰台区中关村软件园创新中心1-1051), (19, 20, 老王, 北京市海淀区中关村软件园创新中心1-1001), (20, 23, 老李, 北京市朝阳区中关村软件园创新中心1-1011), (21, 22, 老高, 北京市昌平区中关村软件园创新中心1-1021)] resultAll: [(22, 25, 老函, 北京市密云区中关村软件园创新中心1-1031), (23, 80, 老彪, 北京市房山区中关村软件园创新中心1-1041), (24, 90, 老表, 北京市丰台区中关村软件园创新中心1-1051), (25, 20, 老王, 北京市海淀区中关村软件园创新中心1-1001), (26, 23, 老李, 北京市朝阳区中关村软件园创新中心1-1011), (27, 22, 老高, 北京市昌平区中关村软件园创新中心1-1021), (28, 25, 老函, 北京市密云区中关村软件园创新中心1-1031), (29, 80, 老彪, 北京市房山区中关村软件园创新中心1-1041), (30, 90, 老表, 北京市丰台区中关村软件园创新中心1-1051), (31, 20, 老王, 北京市海淀区中关村软件园创新中心1-1001), (32, 23, 老李, 北京市朝阳区中关村软件园创新中心1-1011), (33, 22, 老高, 北京市昌平区中关村软件园创新中心1-1021), (34, 25, 老函, 北京市密云区中关村软件园创新中心1-1031), (35, 80, 老彪, 北京市房山区中关村软件园创新中心1-1041), (36, 90, 老表, 北京市丰台区中关村软件园创新中心1-1051), (37, 20, 老王, 北京市海淀区中关村软件园创新中心1-1001), (38, 23, 老李, 北京市朝阳区中关村软件园创新中心1-1011), (39, 22, 老高, 北京市昌平区中关村软件园创新中心1-1021), (40, 25, 老函, 北京市密云区中关村软件园创新中心1-1031), (41, 80, 老彪, 北京市房山区中关村软件园创新中心1-1041), (42, 90, 老表, 北京市丰台区中关村软件园创新中心1-1051), (43, 20, 老王, 北京市海淀区中关村软件园创新中心1-1001), (44, 23, 老李, 北京市朝阳区中关村软件园创新中心1-1011), (45, 22, 老高, 北京市昌平区中关村软件园创新中心1-1021), (46, 25, 老函, 北京市密云区中关村软件园创新中心1-1031), (47, 80, 老彪, 北京市房山区中关村软件园创新中心1-1041), (48, 90, 老表, 北京市丰台区中关村软件园创新中心1-1051), (49, 20, 老王, 北京市海淀区中关村软件园创新中心1-1001), (50, 23, 老李, 北京市朝阳区中关村软件园创新中心1-1011), (51, 22, 老高, 北京市昌平区中关村软件园创新中心1-1021), (52, 25, 老函, 北京市密云区中关村软件园创新中心1-1031), (53, 80, 老彪, 北京市房山区中关村软件园创新中心1-1041), (54, 90, 老表, 北京市丰台区中关村软件园创新中心1-1051), (55, 20, 老王, 北京市海淀区中关村软件园创新中心1-1001), (56, 23, 老李, 北京市朝阳区中关村软件园创新中心1-1011), (57, 22, 老高, 北京市昌平区中关村软件园创新中心1-1021), (58, 25, 老函, 北京市密云区中关村软件园创新中心1-1031), (59, 80, 老彪, 北京市房山区中关村软件园创新中心1-1041), (60, 90, 老表, 北京市丰台区中关村软件园创新中心1-1051), (61, 20, 老王, 北京市海淀区中关村软件园创新中心1-1001), (62, 23, 老李, 北京市朝阳区中关村软件园创新中心1-1011), (63, 22, 老高, 北京市昌平区中关村软件园创新中心1-1021), (64, 25, 老函, 北京市密云区中关村软件园创新中心1-1031), (65, 80, 老彪, 北京市房山区中关村软件园创新中心1-1041), (66, 90, 老表, 北京市丰台区中关村软件园创新中心1-1051), (67, 20, 老王, 北京市海淀区中关村软件园创新中心1-1001), (68, 23, 老李, 北京市朝阳区中关村软件园创新中心1-1011), (69, 22, 老高, 北京市昌平区中关村软件园创新中心1-1021), (70, 25, 老函, 北京市密云区中关村软件园创新中心1-1031), (71, 80, 老彪, 北京市房山区中关村软件园创新中心1-1041), (72, 90, 老表, 北京市丰台区中关村软件园创新中心1-1051), (73, 20, 老王, 北京市海淀区中关村软件园创新中心1-1001), (74, 23, 老李, 北京市朝阳区中关村软件园创新中心1-1011), (75, 22, 老高, 北京市昌平区中关村软件园创新中心1-1021), (76, 25, 老函, 北京市密云区中关村软件园创新中心1-1031), (77, 80, 老彪, 北京市房山区中关村软件园创新中心1-1041), (78, 90, 老表, 北京市丰台区中关村软件园创新中心1-1051), (79, 20, 老王, 北京市海淀区中关村软件园创新中心1-1001), (80, 23, 老李, 北京市朝阳区中关村软件园创新中心1-1011), (81, 22, 老高, 北京市昌平区中关村软件园创新中心1-1021), (82, 25, 老函, 北京市密云区中关村软件园创新中心1-1031), (83, 80, 老彪, 北京市房山区中关村软件园创新中心1-1041), (84, 90, 老表, 北京市丰台区中关村软件园创新中心1-1051), (85, 20, 老王, 北京市海淀区中关村软件园创新中心1-1001), (86, 23, 老李, 北京市朝阳区中关村软件园创新中心1-1011), (87, 22, 老高, 北京市昌平区中关村软件园创新中心1-1021), (88, 25, 老函, 北京市密云区中关村软件园创新中心1-1031), (89, 80, 老彪, 北京市房山区中关村软件园创新中心1-1041), (90, 90, 老表, 北京市丰台区中关村软件园创新中心1-1051), (91, 20, 老王, 北京市海淀区中关村软件园创新中心1-1001), (92, 23, 老李, 北京市朝阳区中关村软件园创新中心1-1011), (93, 22, 老高, 北京市昌平区中关村软件园创新中心1-1021), (94, 25, 老函, 北京市密云区中关村软件园创新中心1-1031), (95, 80, 老彪, 北京市房山区中关村软件园创新中心1-1041), (96, 90, 老表, 北京市丰台区中关村软件园创新中心1-1051), (97, 20, 老王, 北京市海淀区中关村软件园创新中心1-1001), (98, 23, 老李, 北京市朝阳区中关村软件园创新中心1-1011), (99, 22, 老高, 北京市昌平区中关村软件园创新中心1-1021), (100, 25, 老函, 北京市密云区中关村软件园创新中心1-1031), (101, 80, 老彪, 北京市房山区中关村软件园创新中心1-1041), (102, 90, 老表, 北京市丰台区中关村软件园创新中心1-1051), (103, 20, 老王, 北京市海淀区中关村软件园创新中心1-1001), (104, 23, 老李, 北京市朝阳区中关村软件园创新中心1-1011), (105, 22, 老高, 北京市昌平区中关村软件园创新中心1-1021), (106, 25, 老函, 北京市密云区中关村软件园创新中心1-1031), (107, 80, 老彪, 北京市房山区中关村软件园创新中心1-1041), (108, 90, 老表, 北京市丰台区中关村软件园创新中心1-1051), (109, 20, 老王, 北京市海淀区中关村软件园创新中心1-1001), (110, 23, 老李, 北京市朝阳区中关村软件园创新中心1-1011), (111, 22, 老高, 北京市昌平区中关村软件园创新中心1-1021), (112, 25, 老函, 北京市密云区中关村软件园创新中心1-1031), (113, 80, 老彪, 北京市房山区中关村软件园创新中心1-1041), (114, 90, 老表, 北京市丰台区中关村软件园创新中心1-1051)] resultWhere: [(1, 20, 老王, 北京市海淀区中关村软件园创新中心1-1001), (2, 23, 老李, 北京市朝阳区中关村软件园创新中心1-1011), (3, 22, 老高, 北京市昌平区中关村软件园创新中心1-1021), (4, 25, 老函, 北京市密云区中关村软件园创新中心1-1031), (5, 80, 老彪, 北京市房山区中关村软件园创新中心1-1041)] Process finished with exit code 0 八: 更新数据 import sqlite3对数据库SQLite3执行update操作
conn sqlite3.connect(data.db)cursor conn.cursor()try:sql update t_user set name? where id ?cursor.execute(sql, (老杨, 1)) # id为1的字段更新为老杨conn.commit()print(执行成功!)
except Exception as err:print(update时发生了异常: , err)conn.rollback()
finally:result cursor.execute(select * from t_user where id ?, (1,))print(更新后的数据为: , result.fetchone())print(游标,数据库连接关闭,释放连接资源.....)cursor.close()conn.close()九: 删除操作 import sqlite3对数据库SQLite3执行delete操作
conn sqlite3.connect(data.db)cursor conn.cursor()
try:sql delete from t_user where id ?cursor.execute(sql, (204,)) # id201记录删除conn.commit()print(执行成功!)
except Exception as err:print(删除时发生了异常: , err)conn.rollback()
finally:result cursor.execute(select * from t_user where id 204)for item in result.fetchall():print(删除后的数据为: , item)print(游标,数据库连接关闭,释放连接资源.....)cursor.close()conn.close()