![a66b5fc3e2ac78da3109799adabb2942.png](https://i-blog.csdnimg.cn/blog_migrate/39631c3fff840547e005100be8686a48.jpeg)
同关系型数据库进行交互
在Python中,表达行数据的表尊方式就是采用元组序列。当数据以这种形式呈现的时候,通过Python标准API来同关系型数据库进行交互相对来说就显得很直接了。这个API的要点就是数据库上的所有操作都通过SQL查询来实现,每一行输入或输出数据都由一个元组来表示。
我们可以使用sqlite3模块,如果正在使用一个不同的数据库,就需要安装一个第三方的模块来支持。但是,底层的编程接口即使不完全的话也差不多事一致的
第一步就是连接数据库。一般来说,要调用一个connect()函数,提供类似数据库名称,主机名,用户名和密码这样的参数以及一些其它需要的细节,举个例子:
>>>
然后我们创建一个游标
>>>
要在数据中插入行列,可以这样:
>>>
要执行查询操作就可以这样:
>>>
简单地说,同数据库的交互其实是一件非常直截了当的事情。只要组成SQL语句然后将它们传递给底层的模块就可以更行数据库或者取出数据了。但有些时候我们会遇到一些比较棘手的问题,比如我们需要将数据库中的数据映射到Python的类型中。对于像日期这样的条目,最常见的就是使用datetime模块中的datetime实例或者time模块里的时间戳
对于数值类的数据,尤其是涉及小数的金融类数据,这些数字可以用decimal模块中的Decimal实例来表示
注意,我们绝对不应该用Python的字符串格式化操作符或者.format()方法来创建SQL语句的字符串,这样很容易遭受SQL注入攻击
对于简单地将数据从数据库表项中取出和输入,使用数据库API就完全足够了。如果要处理更加复杂的任务,那么使用一种更高层次的接口就显得非常有意义了
编码和解码16进制的数字
我们需要编码或解码由16进制组成的原始字符串,我们可以使用binascii模块:
>>>
当然,你用base64模块也不是不行:
>>>
对于大部分情况来说,采用上面给出的函数对16进制数进行转换欧式简单直接的,而这两种技术的主要区别就在于大写转换。base64的方法只能对大写形式的16进制数进行操作,而binascii模块能够处理任意一种情况。
注意:当解码16进制的时候,b16decode()和a2b_hex()函数可接受字节串或者是Unicode字符串作为输入。但是,这些字符串中必须且只能包含ASCII编码的十六进制数字
Base64的编码和解码
用b64encode()和b64decode()这两个函数就好
>>>
Base64编码只能用在面向字节的数据上,比如说字节串和字节数组,此外,编码过程的输出总是一个字节串,如果将Base64编码的数据同Unicode文本混在一起,那么可能需要多个解码步骤。
参考书目:
《Python CookBook》作者:【美】 David Beazley, Brian K. Jones
Github地址:
yidao620c/python3-cookbookgithub.com![7599e9b9b2cf422434f18069eb0842ca.png](https://i-blog.csdnimg.cn/blog_migrate/e9860352844e542ca3b56c7837fdb32a.jpeg)