封装的python mysql操作ORM类
2014-04-09 17:15
916 查看
这段时间写项目用了python的mysql模块,觉得sqlalchemy太庞大就自己封装了一个简单的基于mysql-python的ORM文件。功能目前刚好够用以后会慢慢完善。这个操作类中解决了python编码和入mysql库编码不统一的问题,同时还解决了mysql的反斜杠'\'会被转义丢弃的问题。
1、安装mysql-python模块
python的mysql操作需要安装mysql-python库,安装方法如下。
如果安装的时候报错,提示EnvironmentError: mysql_config not found,请安装libmysqld-dev
2、我的mysql-python封装操作模型
首先是mysql连接配置文件config.py:
然后是封装的操作类,由于代码比较长,请移步github查看。下面我说下简单的用法:
如果使用mysql-python官方扩展的时候报错
其原因是我将mysql的sock文件已经调整到/tmp/mysql.sock,所以必须在mysqldb中指定sock的路径,unix_socket参数指定了sock文件的路径
1、安装mysql-python模块
python的mysql操作需要安装mysql-python库,安装方法如下。
sudo pip install MySQL-python
如果安装的时候报错,提示EnvironmentError: mysql_config not found,请安装libmysqld-dev
2、我的mysql-python封装操作模型
首先是mysql连接配置文件config.py:
#Mysql配置 mysql_host='localhost' mysql_user='root' mysql_passwd='12345' mysql_db='test' mysql_charset='utf8'
然后是封装的操作类,由于代码比较长,请移步github查看。下面我说下简单的用法:
#!/usr/bin/python #-*- coding:utf-8 -*- #在config.py里配置数据库连接 from mysql_conn import myMdb mydb = myMdb() #新建表结构 mydb.setTable('testtablename', "(`test_id` int(10) NOT NULL AUTO_INCREMENT,`test_col1` varchar(255) NOT NULL,`test_col2` varchar(255) NOT NULL, PRIMARY KEY (`test_id`), KEY `test_col1` (`test_col1`), KEY `test_col2` (`test_col2`)) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;" ) #新增数据记录 tag = mydb._insert({'test_col1':'123','test_col2':'455'})._from('testtablename').execute() print tag #修改数据记录 tag = mydb._update({'test_col2':'456'})._from('testtablename')._where({'column':'test_id','data':'1','relation':'='}).execute() print tag #删除数据记录 tag = mydb._delete()._from('testtablename')._where({'column':'test_id','data':'3','relation':'<'}).execute() print tag #查询前100条数据并排序 rs = mydb._select('*')._from('testtablename')._where({'column':'test_col1','data':'123','relation':'='})._where({'column':'test_col2','data':'456','relation':'!='})._limit(100,1)._order({'test_id':'DESC'}).execute() print rs #两表联合查询 rs = mydb._select('a.*')._from('testtablename_1','a')._leftjoin('testtablename_2','b','a.test_col1=b.test_col1')._where({'column':'a.test_col1','data':'123','relation':'='}).execute() print rs #支持上下文管理方式调用 with myMdb() as mydb: tag = mydb._insert({'test_col1':'123','test_col2':'455'})._from('testtablename').execute() print tag #打印调试最近一次执行的sql语句 print mydb.getsql
如果使用mysql-python官方扩展的时候报错
OperationalError: (2002, "Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)")
其原因是我将mysql的sock文件已经调整到/tmp/mysql.sock,所以必须在mysqldb中指定sock的路径,unix_socket参数指定了sock文件的路径
mdb.connect(host=config.mysql_host, user=config.mysql_user, passwd=config.mysql_passwd, db=config.mysql_db, charset=config.mysql_charset, unix_socket='/tmp/mysql.sock')
相关文章推荐
- Python 操作 MySQL 之 pysql 与 ORM(转载)
- Python(SQLAlchemy-ORM)模块之mysql操作
- python操作三大主流数据库(3)python操作mysql③python操作mysql的orm工具sqlaichemy安装配置和使用
- python下的orm基本操作(1)--Mysql下的CRUD简单操作(含源码DEMO)
- [置顶] python操作mysql ——sqlalchemy (ORM)
- python对mysql.connector的简单封装,读改增删基本操作
- 通过python操作mysql和orm操作mysql
- Python操作MySQL
- python操作MySQL
- Python操作Mysql(转)
- JDBC连接MySQL 方法(封装方法,把增删改查操作封装在函数中)
- 跟我学python之mysql操作详解 一、查询操作
- python 如何操作mysql 数据库
- C++操作MYSQL(封装成DLL)
- python操作MySQL 模拟简单银行转账操作
- python操作mysql基础之查询、比对、求和
- Mysql对文件操作的封装
- MySql的dql和dml操作的封装,成为固定的工具类
- Python操作MySQL
- 使用Python操作SQL数据库(mysql)