python 模块 SQLalchemy

‘‘‘
# &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
# SQLAlchemy ORM框架(需要依赖数据库API语言)

# 架构图
# SQLalchemy orm
# SQLalchemy core
#       --> schema/types 架构/类型
#       --> sql expression language SQL表达式语言
#       --> engine(框架引擎)
#           --> connection pooling (数据库连接池)
#           --> diaiect (选择连接数据路的DB api种类)
# DBAPI(pymysql,oracle,sqlite)

目标:
    类/对箱操作 -> SQL -> pymsql、mysqldb -> 在去数据中执行

连接数据库:
    MYSQL - python
    mysql+mysqldb://<user>:<password>@<host>:<port>/<dbname>

    pymysql
    mysql+pymsql://<username>:<password>@<host>/<dbname>
    示例:
    "mysql+pymysql://root:123456@127.0.0.1:3306/t1?charset=utf8"

    cx_Oracle
    oracle+cx_oracle://user:pwd@host:port/dbname 

基本使用
    import sqlalchemy
    from sqlalchemy import create_engine

    engine = create_engine
    import sqlalchemy
    from sqlalchemy import create_engine
    import pymysql
    import threading

    # 基本连接操作:(不推荐这种用法!)
    engine = create_engine(
        "mysql+pymysql://root:123456@127.0.0.1:3306/anec?charset=utf8",
        max_overflow=2,
        pool_size=5,
        pool_timeout=30,
        pool_recycle=-1,
    )

    def task(arg):
        conn = engine.raw_connection()
        cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
        cursor.execute(‘select id,name from student;‘)
        result = cursor.fetchall()
        print(result)
        cursor.close()
        conn.close()

    for i in range(10):
        t = threading.Thread(target=task,args=(i,))
        t.start()

#------------------------------
 # 基本连接操作:(推荐这种用法!)
# import sqlalchemy
# from sqlalchemy import create_engine
# from sqlalchemy.orm import scoped_session
# from sqlalchemy.orm import sessionmaker
#
# engine = create_engine("mysql+pymysql://root:123456@127.0.0.1:3306/anec?charset=utf8", pool_size = 5)
# Session = sessionmaker(bind=engine)
#
# # 这种方式的话,就是多线程的,scoped_session 传递Session值至类,封装了treading.local() ,从而达到多线程
# sess = scoped_session(Session)
# obj = modeles.表名(name=‘axlex‘,email=‘123@qq.com‘)
# sess.add(obj)
# sess.commit()

#------------------------------

# 创建数据表
from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
# from sqlalchemy import Column,Integer,String......
from sqlalchemy import *

Base = declarative_base()

class Info(Base):
    __tablename__=‘info‘
    id = Column(Integer,primary_key=True)
    name = Column(String(64),index=True,nullable=False)

def init_db():
    """
    用类 创建数据表
    :return:
    """
    engine = create_engine(
        "mysql+pymysql://root:123456@127.0.0.1:3306/anec?charset=utf8",
        max_overflow=2,
        pool_size=5,
        pool_timeout=30,
        pool_recycle=-1,
    )
    Base.metadata.create_all(engine)

def drop_db():
    """
    用类 创建数据表
    :return:
    """
    engine = create_engine(
        "mysql+pymysql://root:123456@127.0.0.1:3306/anec?charset=utf8",
        max_overflow=2,
        pool_size=5,
        pool_timeout=30,
        pool_recycle=-1,
    )
    Base.metadata.drop_all(engine)

# sqlalchemy默认不能修改表!!!!!!!

# init_db()
# ----------------------------------
# 操作数据

from sqlalchemy.orm import sessionmaker

engine = create_engine(
        "mysql+pymysql://root:123456@127.0.0.1:3306/anec?charset=utf8",
        max_overflow=2,
        pool_size=5,
        pool_timeout=30,
        pool_recycle=-1,
    )
conn = sessionmaker(bind=engine)
session = conn()

# 添加单条数据
# obj1 = Info(name=‘anec‘)
# session.add(obj1)

# 添加多条数据
# data = [
#     Info(name=‘adasda‘),
#     Info(name=‘aaaaa‘),
#     Info(name=‘bbbbb‘),
# ]
# session.add_all(data)

# 查询数据
# 查询所有数据
result = session.query(表名).all()
for i in result;
    print(i.id)
    print(i.name)

# 条件查询数据
result = session.query(表名).filter(表名.字段 > 2)

# 删除数据
result = session.query(表名).filter(表名.字段 > 2).delete()

# 修改数据
result = session.query(表名).filter(表名.字段 = 2).update({‘字段‘:"新数值"})
result = session.query(表名).filter(表名.字段 > 2).update({‘字段‘:"字符字段"+字符},synchronize_session=False)
result = session.query(表名).filter(表名.字段 > 2).update({‘字段‘:"数值字段"+数值},synchronize_session=evaluate)

session.commit()
session.close()

‘‘‘

原文地址:https://www.cnblogs.com/Anec/p/10469923.html

时间: 2024-11-12 14:24:37

python 模块 SQLalchemy的相关文章

python模块介绍

adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheetahcherrypy:一个WEB frameworkctypes:用来调用动态链接库DBUtils:数据库连接池django:一个WEB frameworkdocutils:用来写文档的dpkt:数据包的解包和组包MySQLdb:连接MySQL数据库的py2exe:用来生成windows可执行文件Pylons:我们领导推荐的web frameworkpysql

常用的python模块及安装方法

adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheetahcherrypy:一个WEB frameworkctypes:用来调用动态链接库DBUtils:数据库连接池django:一个WEB frameworkdocutils:用来写文档的dpkt:数据包的解包和组包MySQLdb:连接MySQL数据库的py2exe:用来生成windows可执行文件Pylons:我们领导推荐的web frameworkpysql

转 《python开发_常用的python模块及安装方法》

http://www.cnblogs.com/hongten/p/hongten_python_more_modules.html adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheetahcherrypy:一个WEB frameworkctypes:用来调用动态链接库DBUtils:数据库连接池django:一个WEB frameworkdocutils:用来写文档的dpkt:数据包的解包和组包MySQLdb:

50个很棒的Python模块

我很喜欢Python,Python具有强大的扩展能力,我列出了50个很棒的Python模块,包含几乎所有的需要:比如Databases,GUIs,Images, Sound, OS interaction, Web,以及其他.推荐收藏. Graphical interface wxPython http://wxpython.org Graphical interface pyGtk http://www.pygtk.org Graphical interface pyQT http://www

python-学习笔记之-Day5 双层装饰器 字符串格式化 python模块 递归 生成器 迭代器 序列化

1.双层装饰器 #!/usr/bin/env python # -*- coding: utf-8 -*- # author:zml LOGIN_INFO = False IS_ADMIN = False   def check_log(func): def inner(): res = func() if LOGIN_INFO: print('验证成功!') return res else: print('验证失败!') return inner   def check_admin(func)

Python模块的交叉引用问题分析

实际项目中遇到python模块相互引用问题,查资料,说是通过import局部导入的方式可以避免错误,资料如附录所述. 但更改后测试还是会出错,很疑惑!? 如果哪位读者有好的解决方法,敬请留言说明,谢谢. 所以,最好的方法是不进行交叉引用,如果需要就单独分一个模块出来. 附录:Python模块的交叉引用问题解读:How can I have modules that mutually import each other? 有下面两个文件相互引用,Python解释器报错. foo.py: from

python模块以及导入出现ImportError: No module named &#39;xxx&#39;问题

python模块以及导入出现ImportError: No module named 'xxx'问题 python中,每个py文件被称之为模块,每个具有__init__.py文件的目录被称为包.只要模 块或者包所在的目录在sys.path中,就可以使用import 模块或import 包来使用 如果你要使用的模块(py文件)和当前模块在同一目录,只要import相应的文件名就好,比 如在a.py中使用b.py:  import b 但是如果要import一个不同目录的文件(例如b.py)该怎么做

python模块搜索路径

1.电脑版 (1).python安装目录中\Lib\site-packages\下建立*.pth文件,写入模块路径 (2).添加环境变量:变量名:pythonpath;变量值:模块(文件夹)路径 ,若有多个,用半角分号";"隔开 2.手机版 在resource\site.py文件中添加代码段 import syssys.path.append("模块(文件夹)路径") 发现:第一个参数都是C:\\resource 我的理解: 程序安装盘下的site.py指定模块路径

4.python模块

python 字符串 一.注释 在python中的注释分为单行注释和多行注释    (1)单行注释:为在语句的前边加"#" 例子: #!/usr/bin/env python a = 123 print a #print a #print a #print a 执行结果如下: [[email protected] ~]# python a.py 123  (2)多行注释:可以用3对单引号(比如:''' 注释内容''') 或是3对双引号(比如:"""注释内容