!/usr/bin/python

-- coding: UTF-8 --

author = 'luke'

from sqlalchemy import create_engine

from sqlalchemy.ext.declarative import declarative_base

from sqlalchemy import Column, Integer, String

from sqlalchemy.orm import sessionmaker

import traceback

打开数据库连接

session_class = sessionmaker(bind=connect) # 创建与数据库的会话session class ,这里返回给session的是个class,不是实例

Base = declarative_base() # 生成ORM基类

##################User Class##################################

class User(Base):

tablename = "hello_word" # 表名

id = Column(String(255), primary_key=True)

score = Column(Integer)

sccess_times = Column(Integer)

fail_times = Column(Integer)

http_type = Column(String(255))

##################IpRate Class##################################

class IpRate(Base):

tablename = "ip_rate" # 表名

id = Column(String(255), primary_key=True)

fail_times = Column(Integer)

score = Column(Integer)

sccess_times = Column(Integer)

http_type = Column(String(255))

def _addOne(obj):

try:

    session = session_class()
#新增一条数据
#原生sql:insert into mysql.hello_word(name,password) values("test2","1234");
#obj = User(id="127.0.0.1:8080", score=5,sccess_times=0,fail_times=0,http_type='http') #生成你要创建的数据对象
session.add(obj) #把要创建的数据对象添加到这个session里, 一会统一创建
session.commit() #统一提交,创建数据,在此之前数据库是不会有新增数据的
print('addOne ok...')
except:
session.rollback()
print ("Error: unable to addOne data")
finally:
session.close()

def _addAll(objlist):

'''

objlist: object list

'''

try:

session = session_class()

session.add_all(objlist) #把要创建的数据对象添加到这个session里, 一会统一创建

session.commit() #统一提交,创建数据,在此之前数据库是不会有新增数据的

except:

session.rollback()

print ("Error: unable to addAll data")

finally:

session.close()

def _del(obj):

'''

objlist: object list

'''

try:

session = session_class()

session.query(obj).delete() #通过session查询User类,然后过滤出id>5的进行删除

print ("_del...ok")

session.commit()

except:

session.rollback()

print ("Error: unable to delete data")

finally:

session.close()

def _updateOneById(obj,id,key,value):

try:

session = session_class()

data = session.query(obj).filter(id==id)

setattr(object=data,name=key,value=value)

session.commit()

print ("_updateOneById...ok")

except:

session.rollback()

print ("Error: unable to update data")

finally:

session.close()

def _fetchOneById(obj,id):

try:

session = session_class()

results = session.query(obj).filter(obj.idid)

if(len(results) > 0):

print ("_fetchOneById...ok")

return results[0]

else:

return None

except:

print ("Error: unable to _fetchOneById data")

finally:

session.close()

def _fetchAll(obj):

try:

session = session_class()

results = session.query(obj).all() #查询所有

if(len(results) > 0):

print ("_fetchAll...ok")

return results

else:

return None

except:

print ("Error: unable to _fetchAll data")

finally:

session.close()

if name'main':

try:

#Base.metadata.create_all(connect) # 创建表结构

#print('创建成功')

user = User(id='127.0.0.2:8080',score=10,sccess_times=0,fail_times=0,http_type='http')

# user.id = '127.0.0.1:8080'

# user.score = 10

# user.sccess_times = 0

# user.fail_times = 0

# user.http_type = 'http'

#_addOne(user)

data = _fetchOneById(User,'127.0.0.1:8080')

print(data)

data2 = _fetchAll(User)

_updateOneById(User,'127.0.0.1:8080','score',1)

_del(user)

except BaseException as e:

traceback.print_exc()

python入门练习之如何连接数据库的更多相关文章

  1. 6 小时 Python 入门

    6 小时 Python 入门 以下操作均在 Windows 环境下进行操作,先说明一下哈 一.安装 Python 1.官网下载 Python 进入官网(https://www.python.org), ...

  2. python入门简介

    Python前世今生 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC ...

  3. python入门学习课程推荐

    最近在学习自动化,学习过程中,越来越发现coding能力的重要性,不会coding,基本不能开展自动化测试(自动化工具只是辅助). 故:痛定思痛,先花2个星期将python基础知识学习后,再进入自动化 ...

  4. Python运算符,python入门到精通[五]

    运算符用于执行程序代码运算,会针对一个以上操作数项目来进行运算.例如:2+3,其操作数是2和3,而运算符则是“+”.在计算器语言中运算符大致可以分为5种类型:算术运算符.连接运算符.关系运算符.赋值运 ...

  5. Python基本语法[二],python入门到精通[四]

    在上一篇博客Python基本语法,python入门到精通[二]已经为大家简单介绍了一下python的基本语法,上一篇博客的基本语法只是一个预览版的,目的是让大家对python的基本语法有个大概的了解. ...

  6. Python基本语法,python入门到精通[二]

    在上一篇博客Windows搭建python开发环境,python入门到精通[一]我们已经在自己的windows电脑上搭建好了python的开发环境,这篇博客呢我就开始学习一下Python的基本语法.现 ...

  7. visual studio 2015 搭建python开发环境,python入门到精通[三]

    在上一篇博客Windows搭建python开发环境,python入门到精通[一]很多园友提到希望使用visual studio 2013/visual studio 2015 python做demo, ...

  8. python入门教程链接

    python安装 选择 2.7及以上版本 linux: 一般都自带 windows: https://www.python.org/downloads/windows/ mac os: https:/ ...

  9. Python学习【第二篇】Python入门

    Python入门 Hello World程序 在linux下创建一个叫hello.py,并输入 print("Hello World!") 然后执行命令:python hello. ...

随机推荐

  1. Introduction MBG

    文档地址 http://www.mybatis.org/generator/configreference/xmlconfig.html 源码地址 https://github.com/mybatis ...

  2. 编写高质量代码改善C#程序的157个建议——建议129:泛型类型参数要以T作为前缀

    建议129:泛型类型参数要以T作为前缀 作为一种约定,泛型类型的参数要以T作为前缀.如委托声明: Action<T1,T2> 其中,泛型类型参数名不应该处理成: Action<Arg ...

  3. Altera SOPC FrameBuffer系统设计教程

    Altera SOPC FrameBuffer系统设计教程 小梅哥编写,未经授权,严禁转载或用于任何商业用途 在嵌入式系统中,LCD屏作为最友好的人机交互方式,被大量的应用到了各个系统中.在基于ARM ...

  4. Python之模块二

    10>常用模块: 1>os模块: os.getcwd():获取当前工作目录,即当前python脚本工作的目录路径: os.chdir("dirname"):改变当前脚本 ...

  5. Label下FormattedText中的Span无法使用Binding的解决方法

    在Xamarin.Forms中,Xaml的模板功能并没有原生WPF丰富,比如Label中虽然有FormattedText可以添加Span来丰富Label的功能,但是下面的Span中的Text并没有绑定 ...

  6. mvn -v提示Permission denied

    解决办法: 增加权限 chmod a+x  /usr/local/apache-maven-3.5.2/bin/mvn 解释: (a:所有用户  +:增加权限   x:执行权限)

  7. ubuntu 中安装 Redis

    1.下载安装root@21ebdf03a086:/# apt-cache search redisroot@21ebdf03a086:/# apt-get install redis-server a ...

  8. CSS:如何清除a标签之间的默认留白间距

    即使我们使用了类似 *{margin: 0;padding: 0;} 这样的代码重置了浏览器默认样式,也会发现类似<a>标签这种inline-block元素,它们之间也还存在着间距. de ...

  9. pageadmin自助建站 网站目录权限的设置方法

    在用pageadmin网页设计的时候遇到各种问题可以参考官网教程网站目录权限的设置方法 网站目录必须设置读取和写入权限,否则后台解压,删除文件,在线上传等功能都无法正常使用,下面讲解本机和服务器配置目 ...

  10. hihocoder1634 Puzzle Game

    题目链接:(vjudge) 戳我 和上面那个matrix 比较像. 大概题意就是给你一个n*m的矩阵,然后可以选择其中一个数字进行修改(当然也可以不修改),使得矩阵的最大子矩阵尽可能小.最后输出这个值 ...