【Python学习笔记】第二十五节 Python MySQL
Python 连接到 MySQL 数据库有几种不同的连接方法,而且不是所有的方法都能与不同的操作系统很好地配合.
MySQL connector/Python模块是Oracle支持的官方驱动,用于通过Python连接MySQL。该连接器完全是Python语言,而mysqlclient是用C语言编写的。它也是独立的,意味着它不需要MySQL客户端库或标准库以外的任何Python模块。
注意,MySQL Connector/Python不支持旧的MySQL服务器认证方法,这意味着4.1之前的MySQL版本不能工作。
本文实例的运行环境:
Windows 10
MySQL 8.0
一、创建数据库连接
1、首先安装mysql-connector-python模块。
python -m pip install mysql-connector
2、连接数据库:
# coding=utf-8import mysql.connectormydb = mysql.connector.connect(host="127.0.0.1", # 数据库主机地址user="root", # 数据库用户名passwd="root" # 数据库密码
)print(mydb)
运行结果
<mysql.connector.connection.MySQLConnection object at 0x000002B399503AC0>
二、创建数据库
1、创建数据库使用 "CREATE DATABASE" 语句,以下创建一个名为 python_demo 的数据库:
# coding=utf-8import mysql.connectormydb = mysql.connector.connect(host="127.0.0.1", # 数据库主机地址user="root", # 数据库用户名passwd="root" # 数据库密码
)print(mydb)myCursor = mydb.cursor()myCursor.execute("CREATE DATABASE python_demo")
2、使用 "SHOW DATABASES" 语句来查看数据库是否存在:
# coding=utf-8import mysql.connectormydb = mysql.connector.connect(host="127.0.0.1", # 数据库主机地址user="root", # 数据库用户名passwd="root" # 数据库密码
)print(mydb)myCursor = mydb.cursor()# myCursor.execute("CREATE DATABASE python_demo")
myCursor.execute("SHOW DATABASES")for x in myCursor:print(x)
我们可以直接连接数据库,如果数据库不存在,会输出错误信息:
# coding=utf-8import mysql.connectormydb = mysql.connector.connect(host="127.0.0.1", # 数据库主机地址user="root", # 数据库用户名passwd="root", # 数据库密码database="python_demo" # 指定数据库
)print(mydb)
三、创建数据表
创建数据表使用 "CREATE TABLE" 语句,创建数据表前,需要确保数据库已存在,以下创建一个名为 user 自增主键的数据表:
# coding=utf-8import mysql.connectormydb = mysql.connector.connect(host="127.0.0.1", # 数据库主机地址user="root", # 数据库用户名passwd="root", # 数据库密码database="python_demo" # 指定数据库
)# print(mydb)myCursor = mydb.cursor()
myCursor.execute("CREATE TABLE user (id int(11) primary key not null auto_increment,name VARCHAR(64), mobile VARCHAR(32), address VARCHAR(255))")
如果我们的表已经创建,我们需要使用 ALTER TABLE 来给表添加主键:
# coding=utf-8import mysql.connectormydb = mysql.connector.connect(host="127.0.0.1", # 数据库主机地址user="root", # 数据库用户名passwd="root", # 数据库密码database="python_demo" # 指定数据库
)# print(mydb)myCursor = mydb.cursor()
myCursor.execute("ALTER TABLE user ADD COLUMN id INT AUTO_INCREMENT PRIMARY KEY")
四、插入数据
插入数据使用 "INSERT INTO" 语句:
# coding=utf-8import mysql.connectormydb = mysql.connector.connect(host="127.0.0.1", # 数据库主机地址user="root", # 数据库用户名passwd="root", # 数据库密码database="python_demo" # 指定数据库
)# print(mydb)myCursor = mydb.cursor()sql = "INSERT INTO user (name, mobile,address) VALUES (%s, %s, %s)"
val = ("Lily", "13866669999", "America")
myCursor.execute(sql, val)
mydb.commit() # 提交print(myCursor.rowcount, "插入成功。")
批量插入
批量插入使用 executemany() 方法,该方法的第二个参数是一个元组列表,包含了我们要插入的数据:
# coding=utf-8import mysql.connectormydb = mysql.connector.connect(host="127.0.0.1", # 数据库主机地址user="root", # 数据库用户名passwd="root", # 数据库密码database="python_demo" # 指定数据库
)# print(mydb)myCursor = mydb.cursor()sql = "INSERT INTO user (name, mobile,address) VALUES (%s, %s, %s)"
# val = ("Lily", "13866669999", "America")val = [("LiLei", "13866668888", "China"),("Jim", "13855558888", "America"),("HanMeimei", "13811113333", "China")
]
# myCursor.execute(sql, val)
myCursor.executemany(sql, val)mydb.commit() # 提交print(myCursor.rowcount, "插入成功。")
3 插入成功。
五、查询数据
1、查询数据使用 SELECT 语句:
# coding=utf-8import mysql.connectormydb = mysql.connector.connect(host="127.0.0.1", # 数据库主机地址user="root", # 数据库用户名passwd="root", # 数据库密码database="python_demo" # 指定数据库
)myCursor = mydb.cursor()myCursor.execute("SELECT * FROM user")result = myCursor.fetchall() # fetchall() 获取所有记录for x in result:print(x)
读取指定的字段数据:
# coding=utf-8import mysql.connectormydb = mysql.connector.connect(host="127.0.0.1", # 数据库主机地址user="root", # 数据库用户名passwd="root", # 数据库密码database="python_demo" # 指定数据库
)myCursor = mydb.cursor()# myCursor.execute("SELECT * FROM user")
myCursor.execute("SELECT name, mobile, address FROM user")
result = myCursor.fetchall() # fetchall() 获取所有记录for x in result:print(x)
读取一条数据,可以使用 fetchone() 方法:
# coding=utf-8import mysql.connectormydb = mysql.connector.connect(host="127.0.0.1", # 数据库主机地址user="root", # 数据库用户名passwd="root", # 数据库密码database="python_demo" # 指定数据库
)myCursor = mydb.cursor()# myCursor.execute("SELECT * FROM user")
myCursor.execute("SELECT name, mobile, address FROM user")
# result = myCursor.fetchall() # fetchall() 获取所有记录
result = myCursor.fetchone() # fetchall() 获取一条记录
print(result)
('Lily', '13866669999', 'America')
2、where 条件语句
如果我们要读取指定条件的数据,可以使用 where 语句:
# coding=utf-8import mysql.connectormydb = mysql.connector.connect(host="127.0.0.1", # 数据库主机地址user="root", # 数据库用户名passwd="root", # 数据库密码database="python_demo" # 指定数据库
)myCursor = mydb.cursor()# myCursor.execute("SELECT * FROM user")
myCursor.execute("SELECT * FROM user where address ='America'")
result = myCursor.fetchall() # fetchall() 获取所有记录
# result = myCursor.fetchone() # fetchall() 获取一条记录
# print(result)
for x in result:print(x)
(1, 'Lily', '13866669999', 'America')
(3, 'Jim', '13855558888', 'America')
为了防止数据库查询发生 SQL 注入的攻击,我们可以使用 %s 占位符来转义查询的条件:
# coding=utf-8import mysql.connectormydb = mysql.connector.connect(host="127.0.0.1", # 数据库主机地址user="root", # 数据库用户名passwd="root", # 数据库密码database="python_demo" # 指定数据库
)myCursor = mydb.cursor()
# myCursor.execute("SELECT * FROM user where address ='America'")sql = "SELECT * FROM user where address = %s"
param = ("China",)myCursor.execute(sql, param)result = myCursor.fetchall() # fetchall() 获取所有记录for x in result:print(x)
(2, 'LiLei', '13866668888', 'China')
(4, 'HanMeimei', '13811113333', 'China')
3、排序
查询结果排序可以使用 ORDER BY 语句,默认的排序方式为升序,关键字为 ASC,如果要设置降序排序,可以设置关键字 DESC。
# coding=utf-8import mysql.connectormydb = mysql.connector.connect(host="127.0.0.1", # 数据库主机地址user="root", # 数据库用户名passwd="root", # 数据库密码database="python_demo" # 指定数据库
)myCursor = mydb.cursor()
# myCursor.execute("SELECT * FROM user ORDER BY name")
sql = "SELECT * FROM user ORDER BY name"
myCursor.execute(sql)
result = myCursor.fetchall() # fetchall() 获取所有记录for x in result:print(x)
(4, 'HanMeimei', '13811113333', 'China')
(3, 'Jim', '13855558888', 'America')
(2, 'LiLei', '13866668888', 'China')
(1, 'Lily', '13866669999', 'America')
降序排序实例:
# coding=utf-8import mysql.connectormydb = mysql.connector.connect(host="127.0.0.1", # 数据库主机地址user="root", # 数据库用户名passwd="root", # 数据库密码database="python_demo" # 指定数据库
)myCursor = mydb.cursor()
# myCursor.execute("SELECT * FROM user ORDER BY name")
sql = "SELECT * FROM user ORDER BY address DESC "
myCursor.execute(sql)
result = myCursor.fetchall() # fetchall() 获取所有记录for x in result:print(x)
(2, 'LiLei', '13866668888', 'China')
(4, 'HanMeimei', '13811113333', 'China')
(1, 'Lily', '13866669999', 'America')
(3, 'Jim', '13855558888', 'America')
4、Limit
如果我们要设置查询的数据量,可以通过 "LIMIT" 语句来指定
# coding=utf-8import mysql.connectormydb = mysql.connector.connect(host="127.0.0.1", # 数据库主机地址user="root", # 数据库用户名passwd="root", # 数据库密码database="python_demo" # 指定数据库
)myCursor = mydb.cursor()
# myCursor.execute("SELECT * FROM user ORDER BY name")
sql = "SELECT * FROM user LIMIT 2 "myCursor.execute(sql)
result = myCursor.fetchall() # fetchall() 获取所有记录for x in result:print(x)
(1, 'Lily', '13866669999', 'America')
(2, 'LiLei', '13866668888', 'China')
指定起始位置,使用的关键字是 OFFSET:
# coding=utf-8import mysql.connectormydb = mysql.connector.connect(host="127.0.0.1", # 数据库主机地址user="root", # 数据库用户名passwd="root", # 数据库密码database="python_demo" # 指定数据库
)myCursor = mydb.cursor()
# sql = "SELECT * FROM user LIMIT 2 "
sql = "SELECT * FROM user LIMIT 2 OFFSET 1"myCursor.execute(sql)
result = myCursor.fetchall() # fetchall() 获取所有记录for x in result:print(x)
(2, 'LiLei', '13866668888', 'China')
(3, 'Jim', '13855558888', 'America')
六、删除记录
删除记录使用 "DELETE FROM" 语句:
# coding=utf-8import mysql.connectormydb = mysql.connector.connect(host="127.0.0.1", # 数据库主机地址user="root", # 数据库用户名passwd="root", # 数据库密码database="python_demo" # 指定数据库
)myCursor = mydb.cursor()
sql = "DELETE FROM user WHERE name = 'Jim'"myCursor.execute(sql)
mydb.commit()print(myCursor.rowcount, " 条记录删除")
1 条记录删除
为了防止数据库查询发生 SQL 注入的攻击,我们可以使用 %s 占位符来转义删除语句的条件:
# coding=utf-8import mysql.connectormydb = mysql.connector.connect(host="127.0.0.1", # 数据库主机地址user="root", # 数据库用户名passwd="root", # 数据库密码database="python_demo" # 指定数据库
)myCursor = mydb.cursor()sql = "DELETE FROM user WHERE name = %s"
param = ("HanMeimei",)myCursor.execute(sql, param)
mydb.commit()print(myCursor.rowcount, " 条记录删除")
1 条记录删除
七、更新表数据
数据表更新使用 "UPDATE" 语句:
# coding=utf-8import mysql.connectormydb = mysql.connector.connect(host="127.0.0.1", # 数据库主机地址user="root", # 数据库用户名passwd="root", # 数据库密码database="python_demo" # 指定数据库
)myCursor = mydb.cursor()sql = "UPDATE user SET name = 'Lucy' WHERE name = 'Lily'"myCursor.execute(sql)
mydb.commit()print(myCursor.rowcount, " 条记录被修改")
1 条记录被修改
为了防止数据库查询发生 SQL 注入的攻击,我们可以使用 %s 占位符来转义更新语句的条件:
# coding=utf-8import mysql.connectormydb = mysql.connector.connect(host="127.0.0.1", # 数据库主机地址user="root", # 数据库用户名passwd="root", # 数据库密码database="python_demo" # 指定数据库
)myCursor = mydb.cursor()sql = "UPDATE user SET name = %s WHERE name = %s"
param = ("HanMeimei", "LiLei")myCursor.execute(sql, param)
mydb.commit()print(myCursor.rowcount, " 条记录被修改")
1 条记录被修改
八、删除表
删除表使用 "DROP TABLE" 语句, IF EXISTS 关键字是用于判断表是否存在,只有在存在的情况才删除:
# coding=utf-8import mysql.connectormydb = mysql.connector.connect(host="127.0.0.1", # 数据库主机地址user="root", # 数据库用户名passwd="root", # 数据库密码database="python_demo" # 指定数据库
)myCursor = mydb.cursor()myCursor.execute("SHOW TABLES")for x in myCursor:print(x)sql = "DROP TABLE IF EXISTS user_info" # 删除数据表 user_info
myCursor.execute(sql)print(" 删除数据表 user_info")myCursor.execute("SHOW TABLES")for x in myCursor:print(x)
('user',)
('user_info',)删除数据表 user_info
('user',)
相关文章:
【Python学习笔记】第二十五节 Python MySQL
Python 连接到 MySQL 数据库有几种不同的连接方法,而且不是所有的方法都能与不同的操作系统很好地配合.MySQL connector/Python模块是Oracle支持的官方驱动,用于通过Python连接MySQL。该连接器完全是Python语言,而mysqlclient是用C语言编写的…...
折叠屏手机自带的屏幕表面层为什么不能自己撕?
计划入手折叠屏手机的小伙伴看过来,因为折叠屏手机外观的特殊形态,在日常使用中与普通直板手机屏幕的养护还是有着很大的不同,比如直板机入手后新机开箱撕膜这个操作,对于折叠屏手机来说,万万不可!除此之外…...
20.hadoop系列之Yarn资源调度器
Yarn是一个资源调度平台,负责为运算程序提供服务器运算资源,相当于一个分布式的操作系统,而MapReduce等运算程序则相当于运行于操作系统之上的应用程序 1.Yarn基础架构 Yarn主要由ResourceManager、NodeManager、ApplicationMaster和Contai…...
206页16万字城市运行“一网统管”体系建设项目需求报告
本资料来源网络,知识分享,仅供个人学习,请勿商用。完整资料领取见文末,部分资料内容: 第 一 章 应用场景示例 一.1 一卡通人员管理针对企业厂区、办公楼等场所人员出入频繁、安保问题多样化、管理环节复杂等现状&#…...
【JS】数组Array的使用
arr.length 3 通过设置数组长度,实现截取数组,改变原数组 map 循环遍历数组,不改变原数组,返回一个新的数组(可用变量接收) forEach 循环遍历数组,不改变原数组 join 把数组转化为字符串&…...
2023年,软件测试怎么样?
2022年因为各种不可抗力原因,大厂裁员,失业等等频频受到关注。 不解释,确实存在,各行各业都很难,但是,说软件测试行业不吃香,我还真不认同(不是为培训机构说好话,大环境…...
【学习笔记】NOMURA Programming Competition 2020
C - Folia 不难想到自底向上确定树的形态。可能要多尝试一下 一开始想错了好几个地方,服了 假设某一层有XXX个节点,那么上一层可能有⌈X2⌉,⌈X2⌉1,...,X\lceil\frac{X}{2}\rceil,\lceil\frac{X}{2}\rceil1,...,X⌈2X⌉,⌈2X⌉1,...,X个节点&…...
iis下常用程序的伪静态规则列表(包括wordpress、thinkphp)
shopex discuz2.0 discuz2.5 discuz3.x 淘宝客 ecshop phpwind参照http://www.west.cn/faq/list.asp?unid797通过主机面板设置即可 wordpress设置: 第一步: 1.新建一个“chineseurl.php”文件:在里面写入以下代码上传到wordpress安装目录。…...
【Python语言基础】——Python Select From
Python语言基础——Python Select From 文章目录 Python语言基础——Python Select From一、Python Select From一、Python Select From 从表中选取 如需从 MySQL 中的表中进行选择,请使用 “SELECT” 语句: 实例 从表 “customers” 中选取所有记录,并显示结果: import m…...
数据增广真有那么神奇吗?
作者:皮皮雷 来源:投稿 编辑:学姐 论文题目 How Effective is Task-Agnostic Data Augmentation for Pretrained Transformers? 论文作者 S. Longpre, Y. Wang, and C. DuBois 论文发表于 2020 EMNLP findings 摘要 任务无关的数据增广…...
常用基础硬件知识 - 判断MOS管导通
目录1. 概述2. 判断MOS管的导通1. 概述 本文主要记录下基础的硬件知识,方便自己查阅。 2. 判断MOS管的导通 在产品硬件设计中,有时需要程序控制一些电源使能。 1.原理图已经标出了G极(gate)—栅极、S极(source)—源极、D极(drain)—漏极。 如果没有标…...
2023金三银四,测试人还能找到好工作吗?
嫌看文章麻烦的朋友点这里:2023最新软件测试行业变革细谈之我们该如何应对? 按照往年的惯例,春节后复工的 3 月、4 月是人员跳槽最频繁的时候,俗称“金三银四”。然而,市场大环境的影响,很多行业感受到了一…...
c++构造函数
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录一、构造函数1.构造函数的形式2.构造函数的调用时机3.委托构造函数4.复制构造函数二、析构函数本文仅为个人笔记 视频链接:https://www.bilibili.com/vid…...
redis 未授权访问漏洞
redis 未授权访问漏洞 目录 redis 未授权访问漏洞 漏洞描述 漏洞原因: 漏洞危害 漏洞复现: 漏洞复现 写webshell: 写计划任务:centos默认在/var/spool/cron 写ssh公钥实现ssh登录: 漏洞描述: Redis默认情况下…...
如何制作一个自定义的winpe?
winpe制作过程 获取相关资源 https://www.aliyundrive.com/s/MP58JbRsm76 文件存放位置 将压缩包存放在一个全英文目录下了,我这里选择了D:/winpe目录 解压文件 将三个压缩包进行解压到当前目录,如下图所示 创建一个mount目录,并在mount目录下分别创建boot和install目…...
QString转为2进制,8进制,10进制,16进制介绍
首先看段代码: bool ok false;QString ss "11";qDebug()<<"-----"<<ss.toInt(&ok,2)<<ss.toInt(&ok,10)<<ss.toInt(&ok,16)<<ss.toInt(&ok,8);结果: ----- 3 11 17 9 bool ok fal…...
2023-3-2-22:01随笔
好久没怎么更新技术分享博客了。去年从2022年1月3日到2023年1月份一直专注于ADAS的行车横向功能的研发与实车调试,2022年写了几篇项目经验的文章,像LQR算法(虽然和同事(志同道合,技术追求的民哥)写出的工程…...
学习红客技术必备,手把手教你成为“安防第一人”
互联网时代已悄悄来临,作为新时代的人们,我们日常生活、工作、学习方面都需要借助互联网来完成,这样,又产生一种新的问题,那就是网络安全的问题,有时我们拼命加班好不容易完成的东西,在一夜之间…...
Git系列:常见指令辨析
Git系列:常见指令辨析指令辨析工作区、暂存区、版本库傻傻分不清楚?主干和分支的关系是什么?git fetch/merge/pull辨析日志查看时,git log与git reflog的区别是?git diff和status的区别是?相关资料本文小结…...
并发编程实战-构建自定义的同步工具
文章目录1.状态依赖性的管理1.1 示例:将前提条件的失败传递给调用者1.2 示例:通过轮询与休眠来实现简单的阻塞1.3 条件队列2.使用条件队列2.1 条件谓词2.2 过早唤醒2.3 丢失的信号2.4 通知2.5 示例:阀门类2.6 子类的安全问题2.7 入口协议与出…...
HBase集群部署
目录 一、前期准备 二、HBase下载 1. 查看HBase与hadoop版本对应关系 2. hbase的下载 3. 将hbase的tar包上传到linux 下 二、安装hbase 1. 解压 2. HBase的文件配置 主机名hadoop版本HBase版本hadoop安装路径Hbase安装路径HadoopMaster3.3.02.4.3/home/hadoop/softwareh…...
网络传输:linux下的网络请求和下载(ping wget curl)、端口
一、下载和网络请求 1.ping命令 可以通过ping命令,检查指定的网络服务器是否可连通状态 语法:ping [-c num] ip或主机名 选项: -c 检查的次数,若不使用-c,将无限次数持续检查参数:ip或主机名,…...
阅读(1)-----六级
目录 1.单词不懂怎么办? 1.1构词法 1.2上下文 2.句子不通怎么办? 3.时间不够怎么办 ? 4.题型 4.1细节题 问文章的细节 4.2主旨题(文章主旨和段落主旨) 4.3语义题 4.4观点题 (一共三种,支持、反对和中立 &…...
【Python实战】快看:”又中奖了,中大奖了“周围的小伙伴都惊呆了~你还不麻溜滴~(代码版彩票小游戏上线啦)
导语 哈喽!北鼻们,晚上好。 夕阳🌇的第一缕阳光送给小可爱们~每天都要加油鸭! 所有文章完整的素材源码都在👇👇 粉丝白嫖源码福利,请移步至CSDN社区或文末公众hao即可免费。 彩票是一个恒古不…...
【python】控制台中文输出乱码解决方案
注:最后有面试挑战,看看自己掌握了吗 文章目录控制台原因解决方法方法一方法二方法三如果是os.system函数乱码控制台原因 一般的情况下,还是我们的源码文件的编码格式问题。我们一般是要把源码文件的编码格式改成utf-8就好了,但是…...
一名IC验证工程师的成长路径是怎么样的?来听听工程师的见解
IC验证这个岗位对于非科班的学生是比较友好的,因为验证需要具备的技能UVM,SV,C等,非科班和科班的差距不会拉开太大。因其岗位需求量巨大而格外受到了大家的青睐,甚至成为不少学生的转行首选。 验证对于IC的重要性 IC…...
java工具jconsole/jstat学习
参考视频【java】jvm指令与工具jstat/jstack/jmap/jconsole/jps/visualVM_哔哩哔哩_bilibili 一、jps 我们再windows和linux都可以看到哪些java进程。 有小伙伴又会问了 这个类是java的 那其他的这么多进程18096 /8685 这些是啥啊 其实也是java进程,只不过是其他程…...
WSN_1 介绍;部分应用介绍
学习自书籍:Fundamentals of Wireless Sensor Networks. WSN 介绍 传感器 从基础角度说,传感器观测采集现实世界的一些数据。 另一个名称是 transducer 换能器,指传感器将一些形式的信号转换为其他形式的信号,如光敏传感器 光…...
linux常用命令介绍 05 篇——实际应用篇(用 cut、uniq等统计文档里每个关键词出现的次数)
linux常用命令介绍 05 篇——实际应用篇(用 cut、uniq等统计文档里每个关键词出现的次数)1. 先导文章——关于行过滤 和 列截取2. 关于单个统计单词个数2.1 grep2.2 wc3. 统计文档中每个关键词出现的次数3.1 先看文档内容 需求3.1.1 文档内容3.1.2 需求…...
大数据处理学习笔记1.7 Scala类与对象
文章目录零、本节学习目标一、类(一)类的定义(二)类的实例化二、单例对象(一)单例对象概念(二)案例演示三、伴生对象(一)伴生对象概念(二…...
做网站制作赚钱吗/网站建设公司哪个好呀
使用java开源itext库对pdf进行操作,分主要分两步先查找指定文字位置,然后再在指定位置插入图片。 1.查找指定文字的坐标位置 这里主要通过实现类RenderListener来完成查找坐标位置 代码如下: package com.anyu.PDFUtils;import java.io.F…...
天津外贸网站建设公司/徐州seo建站
对象数组去重 用ES6的reduce方法 this.backTag [{id:111,name:哈哈哈1}, {id:222,name:哈哈哈2},{id:333,name:哈哈哈3},{id:444,name:哈哈哈4},{id:111,name:哈哈哈5}]; let obj {}this.backTag this.backTag.reduce(function(item, next) {obj[next.id] ? : obj[next.…...
个人网站要有什么/搜索引擎推广的关键词
与REV5.0相比,修改地方如下: 1. 为了与黑金开发板完全匹配,将硬件开发部分中并行flash的操作改为了EPCS控制器的操作; 2. 加入了LCD(一),LCD(二)两章 文档中还有些地方还有不足之处,…...
十大免费客户管理系统/网站seo优化教程
1、索引 序列中所有元素都是从0编号开始,使用负数索引时会从右往左计数,最后一个元素是-1,例子:>>> greeting hello >>> greeting[0] h >>> greeting[-1] o 2、分片 分片可以访问一定范围内的元素>…...
wordpress post_id/北京网站推广排名服务
这堪称是史上最强的相机植入式广告。在1000泰铢纸币上,我们可以看到泰王拉玛九世陛下手中拿着相机的画面。令人好奇的是,他手中的相机会是什么型号呢? 实际上,这个话题前两年在日本网友中就已引起热烈讨论,后来有人称钞…...
被忽悠去做网销了/深圳网站优化哪家好
page_address宏功能描述:page_address( )宏的功能是获得物理页的逻辑地址。page_address( )的定义有多个版本,随内核编译时配置不同而不同。在笔者的机器上,page_address( )被定义成一个宏。page_address文件包含#includepage_address宏定义在…...