Python模拟Web Fetion给好友发送信息(数据库编程模块)
2012-03-17 21:42
706 查看
数据库就主要说下sqlalchemy和elixir吧,其实我也没怎么学,就是之前在研究一个工程型代码的时候学习了点,然后就拿来直接用了。
先介绍下elixir:
官方的文档:http://elixir.ematia.de/trac/wiki/TutorialDivingIn
elixir主要就是用来封装sqlalchemy的ORM模块的(个人的见解)
代码:
数据库中的表有:FetionUsers, ProvincesMap,CitiesMap,sendInfo四个表
FetionUsers就是用来存用户信息的
ProvincesMap存省份名对应的字典,同理CitiesMap也是
sendInfo存你发送的信息
日志文件没有弄
下面介绍sqlalchemy
它起到一个承上启下的作用,承上当然就是连接数据库,启下就是调用elixir去实现对数据库的各种操作
sqlalchemy学习网址有很多
推荐两个学习网址:
http://www.rmunn.com/sqlalchemy-tutorial/tutorial.html
http://mapfish.org/doc/tutorials/sqlalchemy.html
下面给出代码:代码简单易懂
一句SQL语句不用写就搞定了对数据库的各种操作,而且还屏蔽了各种数据库之间SQL语句语法的差异,这就是sqlchemy+elixir的强大之处
先介绍下elixir:
官方的文档:http://elixir.ematia.de/trac/wiki/TutorialDivingIn
elixir主要就是用来封装sqlalchemy的ORM模块的(个人的见解)
代码:
数据库中的表有:FetionUsers, ProvincesMap,CitiesMap,sendInfo四个表
FetionUsers就是用来存用户信息的
ProvincesMap存省份名对应的字典,同理CitiesMap也是
sendInfo存你发送的信息
日志文件没有弄
''' Created on 2012-3-16 @author: xkey ''' from elixir import * class FetionUsers(Entity): using_options(tablename = 'FetionUsers',autoload = True) provinceUser = ManyToOne('ProvincesMap') cityUser = ManyToOne('CitiesMap') class ProvincesMap(Entity): using_options(tablename = 'ProvincesMap',autoload = True) fetionUser = OneToMany('FetionUsers') class CitiesMap(Entity): using_options(tablename = 'CitiesMap',autoload = True) fetionUser = OneToMany('FetionUsers') class SendMsg(Entity): using_options(tablename = 'sendInfo',autoload = True) setup_all() def ExecuteQuery(table,**kwargs):#查询一个表(table),**kwargs就是限制语句 try: result = table.query.filter_by(kwargs).all() session.commit() return result except Exception,e: print e def InsertRecords(table,**kwargs):#插入一条记录 t = table(**kwargs) session.commit() session.close() return 1 def RemoveRecords(table,**kwargs):#删除一条记录 try: t = table.query.filter_by(**kwargs).all() for item in t: session.delete(item) except Exception, e: print "No relation records" return 0 session.commit() session.close() return 1
下面介绍sqlalchemy
它起到一个承上启下的作用,承上当然就是连接数据库,启下就是调用elixir去实现对数据库的各种操作
sqlalchemy学习网址有很多
推荐两个学习网址:
http://www.rmunn.com/sqlalchemy-tutorial/tutorial.html
http://mapfish.org/doc/tutorials/sqlalchemy.html
下面给出代码:代码简单易懂
#-*-coding:utf-8-*- from elixir import * import os,datetime,sys from sqlalchemy.orm import sessionmaker default_encoding = 'utf-8' if sys.getdefaultencoding() != default_encoding: reload(sys) sys.setdefaultencoding(default_encoding) class DbOper: def __init__(self,dbConString): self.__dbConString = dbConString if(self._setupDatabase() < 1):#连接数据库 print "DataBase Initialize error" def insertPrivinceMap(self): provinceMap =\ { "安徽":'AAH',"北京":'ABJ',"福建":'AFJ',"甘肃":'AGS',"广东":'AGD',\ "广西":'AGX',"贵州":'AGZ',"海南":'AHI',"河北":'AHE',"河南":'AHA',\ "黑龙江":'AHL',"湖南":'AHN',"湖北":'AHB',"吉林":'AJL','江苏':'AJS',\ "江西":'AJX','辽宁':'ALN','内蒙':'AMN','宁夏':'ANX','青海':'AQH',\ '山东':'ASD','山西':'ASX','陕西':'ASN','上海':'ASH','四川':'ASC',\ '台湾':'ATW','天津':'ATJ','西藏':'AXZ','新疆':'AXJ','云南':'AYN',\ '浙江':'AZJ','重庆':'ACQ','香港':'AXG','澳门':'AAM' } for key in provinceMap.keys(): value = provinceMap[key] self.__db.InsertRecords(self.__db.ProvincesMap,realname = unicode(key),imagename = value) self.__db.session.commit() self.__db.session.close() def insertCityMap(self): cityMap = {'杭州':'hangzhou','滁州':'chuzhou','北京':'beijing'} for key in cityMap.keys(): value = cityMap[key] self.__db.InsertRecords(self.__db.CitiesMap,realname = unicode(key),imagename = value) self.__db.session.commit() self.__db.session.close() def insertFetionUsers(self,user,province,city,id): self.__db.InsertRecords(self.__db.FetionUsers,username = unicode(user),province = unicode(province),\ city = unicode(city),phoneid = id) self.__db.session.commit() self.__db.session.close() def insertSendMsgInfo(self,username,message,now = datetime.datetime.now()): self.__db.InsertRecords(self.__db.SendMsg,username = unicode(username),message = unicode(message),sendtime = now) self.__db.session.commit() self.__db.session.close() def querySendMsgInfo(self): res = self.__db.session.query(self.__db.SendMsg.id,self.__db.SendMsg.username,self.__db.SendMsg.message,\ self.__db.SendMsg.sendtime).all() self.__db.session.commit() return res def queryFetionUsers(self): res = self.__db.session.query(self.__db.FetionUsers.username,self.__db.FetionUsers.province,\ self.__db.FetionUsers.city,self.__db.FetionUsers.phoneid).all() self.__db.session.commit() return res def queryProvinceMap(self): res = self.__db.session.query(self.__db.ProvincesMap.realname,self.__db.ProvincesMap.imagename).all() self.__db.session.commit() return res # print len(res[0]) # print res[0][0] def queryCityMap(self): res = self.__db.session.query(self.__db.CitiesMap.realname,self.__db.CitiesMap.imagename).all() self.__db.session.commit() return res # print res[0][0].encode('gbk') def deleteRecord(self,tableNum,name): if tableNum == 1: self.__db.RemoveRecords(self.__db.CitiesMap,realname = unicode(name)) else : self.__db.RemoveRecords(self.__db.FetionUsers,username = unicode(name)) self.__db.session.commit() self.__db.session.close() def deleteTable(self,tableNum): if tableNum == 1: self.__db.RemoveRecords(self.__db.CitiesMap) elif tableNum == 2: self.__db.RemoveRecords(self.__db.FetionUsers) self.__db.session.commit() self.__db.session.close() def _setupDatabase(self): try: from sqlalchemy.engine import create_engine engine = create_engine(self.__dbConString,echo = False) engine.text_factory = str metadata.bind = engine Session = sessionmaker(bind = engine,autocommit = True) import dborm self.__db = locals()['dborm'] #得到dborm.py中的方法,就是上面elixir的代码 except Exception,e: print "Set up database error %s" % e return -1 return 1 def closeSession(self): self.__db.session.close() def insertCity(self,real,image): self.__db.InsertRecords(self.__db.CitiesMap,realname = unicode(real),imagename = image) self.__db.session.commit() self.__db.session.close()
一句SQL语句不用写就搞定了对数据库的各种操作,而且还屏蔽了各种数据库之间SQL语句语法的差异,这就是sqlchemy+elixir的强大之处
相关文章推荐
- Python模拟Web Fetion给好友发送信息(HTML解析和具体发送模块)
- Python模拟Web Fetion给好友发送信息(HTML解析和具体发送模块)
- Python模拟Web Fetion给好友发送信息
- 《Python 编程快速上手 — 让繁琐工作自动化》读书笔记之【第11章 从Web抓取信息】
- Python使用Selenium模块实现模拟浏览器抓取淘宝商品美食信息功能示例
- PythonWebCrawler-模拟浏览器爬取信息
- Python使用Selenium模块模拟浏览器抓取斗鱼直播间信息示例
- Python 模拟员工信息数据库操作的实例
- Python模拟Web Fetion登录解析
- python使用requests和beautifusoup模块爬取学校网站的就业中心信息,并发送至自己的邮箱
- python编程_python通过get方式,post方式发送http请求和接收http响应_import urllib模块,import urllib2模块,import httplib模块
- python web编程--CGI模块简单交互。。。
- Python3.0 我的DailyReport 脚本(三) 数据库发送模块
- Python3抓取页面信息,网络编程,简单发送QQ邮件
- python编程练习之四——获取系统内存、CPU、磁盘、平均负载信息并保存到数据库中
- python网络爬虫学习(五) 模拟登陆北邮信息门户并爬取信息
- 微信是一个很神器的软件!用Python掌握好友的信息!勿用于非法!
- python中常用的各种数据库操作模块和连接实例
- python smtplib模块发送SSL/TLS安全邮件实例
- python模块之smtplib: 用python发送SSL/TLS安全邮件