python SQLite说一点点, python使用数据库需要注意的几点

SQLite是一种嵌入式数据库,它的数据库就是一个文件。由于SQLite本身是C写的,而且体积很小,所以,经常被集成到各种应用程序中,甚至在iOS和Android的App中都可以集成。

Python就内置了SQLite3,所以,在Python中使用SQLite,不需要安装任何东西,直接使用。

 

 

在比较低的级别上和数据库交互是非常简单的。你只需提供SQL 语句并调用相应的模块就可以更新或提取数据了。虽说如此,还是有一些比较棘手的细节问题需要逐个列出去解决。


一个难点是数据库中的数据和Python 类型直接的映射。对于日期类型,通常可以使用datetime 模块中的datetime 实例,或者可能是time 模块中的系统时间戳。对于数字类型,特别是使用到小数的金融数据,可以用decimal 模块中的Decimal 实例来表示。不幸的是,对于不同的数据库而言具体映射规则是不一样的,你必须参考相应的文档。

 

另外一个更加复杂的问题就是SQL 语句字符串的构造。千万不要使用Python字符串格式化操作符(如%) 或者.format() 方法来创建这样的字符串。如果传递给这些格式化操作符的值来自于用户的输入,那么你的程序就很有可能遭受SQL 注入攻击(参考http://xkcd.com/327 )。查询语句中的通配符? 指示后台数据库使用它自己的字符串替换机制,这样更加的安全。

 

不幸的是,不同的数据库后台对于通配符的使用是不一样的。大部分模块使用?或%s ,还有其他一些使用了不同的符号,比如:0 或:1 来指示参数。同样的,你还是得去参考你使用的数据库模块相应的文档。一个数据库模块的paramstyle 属性包含了参数引用风格的信息。

 

对于简单的数据库数据的读写问题,使用数据库API 通常非常简单。如果你要处理更加复杂的问题,建议你使用更加高级的接口,比如一个对象关系映射ORM 所提供的接口。类似SQLAlchemy 这样的库允许你使用Python 类来表示一个数据库表,并且能在隐藏底层SQL 的情况下实现各种数据库的操作。

 

posted @ 2019-03-23 17:18  筱筱的春天  阅读(632)  评论(0编辑  收藏  举报