python数据库操作orm_封装的python mysql操作ORM类

这段时间写项目用了python的mysql模块,觉得sqlalchemy太庞大就自己封装了一个简单的基于mysql-python的ORM文件。功能目前刚好够用以后会慢慢完善。这个操作类中解决了python编码和入mysql库编码不统一的问题,同时还解决了mysql的反斜杠'\'会被转义丢弃的问题。

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 importmyMdb

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()printtag#修改数据记录

tag = mydb._update({'test_col2':'456'})._from('testtablename')._where({'column':'test_id','data':'1','relation':'='}).execute()printtag#删除数据记录

tag = mydb._delete()._from('testtablename')._where({'column':'test_id','data':'3','relation':'<'}).execute()printtag#查询前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()printrs#两表联合查询

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()printrs#支持上下文管理方式调用

with myMdb() as mydb:

tag= mydb._insert({'test_col1':'123','test_col2':'455'})._from('testtablename').execute()printtag#打印调试最近一次执行的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')

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值