当前位置: 首页 > news >正文

莞城营销型网站建设上传wordpress后

莞城营销型网站建设,上传wordpress后,杭州电商直播培训班,北京通智能小程序SQLAlchemy 操作数据库 SQLAlchemy为Python提供了不同数据库的统一接口#xff0c;采用ORM的方式操作数据库#xff0c;简洁优雅 一、安装 直接通过pip安装即可 pip install sqlalchemy 二、连接数据库 这里用小巧的sqlite来做测试 from sqlalchemy import create_engine# 创…SQLAlchemy 操作数据库 SQLAlchemy为Python提供了不同数据库的统一接口采用ORM的方式操作数据库简洁优雅 一、安装 直接通过pip安装即可 pip install sqlalchemy 二、连接数据库 这里用小巧的sqlite来做测试 from sqlalchemy import create_engine# 创建连接引擎这里的engine是lazy模式创建直到第一次被使用才真实创建 # echoTrue表示会用logger的方式打印传到数据库的SQL engine create_engine(sqlite:///./test.db, echoTrue) 其他数据库连接方法格式如下 数据库类型数据库驱动名称://用户名:口令机器地址:端口号/数据库名 # 1.1 sqlite内存 engine create_engine(sqlite:///:memory:, echoTrue) # 1.2 sqlite文件 engine create_engine(sqlite:///./test.db, echoTrue)# 2.1 MySQL default engine create_engine(mysql://user:passwdlocalhost/mydatabase) # 2.2 mysql-python engine create_engine(mysqlmysqldb://user:passwdlocalhost/mydatabase) # 2.3 MySQL-connector-python engine create_engine(mysqlmysqlconnector://user:passwdlocalhost/mydatabase) # 2.4 OurSQL engine create_engine(mysqloursql://user:passwdlocalhost/mydatabase)# 3.1 PostgreSQL default engine create_engine(postgresql://user:passwdlocalhost/mydatabase) # 3.2 psycopg2 engine create_engine(postgresqlpsycopg2://user:passwdlocalhost/mydatabase) # 3.3 pg8000 engine create_engine(postgresqlpg8000://user:passwdlocalhost/mydatabase)# 4.1 Oracle default engine create_engine(oracle://user:passwd127.0.0.1:1521/mydatabase) # 4.2 cx_oracle engine create_engine(oraclecx_oracle://user:passwdmydatabase)# 5.1 MS SQL pyodbc engine create_engine(mssqlpyodbc://user:passwdmydatabase) # 5.2 pymssql engine create_engine(mssqlpymssql://user:passwdhostname:port/dbname) 可以看到SQLAlchemy把数据库的连接和数据库的操作分离开来向上提供统一接口 三、表结构 ORM中表格对应一个类所有类都要继承自Base基类 from sqlalchemy.ext.declarative import declarative_base# 基类 Base declarative_base()# 定义User对象 class User(Base):Users table# 表的名字__tablename__ users__table_args__ {sqlite_autoincrement: True}# 表结构id Column(Integer, primary_keyTrue, autoincrementTrue)name Column(String(32), nullableFalse)age Column(Integer, default0)password Column(String(64), uniqueTrue) 四、操作 操作需要通过session来进行增删改结束后需要commit查询不用 # 删除 session DBSession() duser session.query(User).filter(User.id2).delete() session.commit() session.close()#查询 session DBSession() quser session.query(User).filter(User.id4).one() print(name:,quser.name) session.close() 操作体验和很多ORM一致 五、完整测试代码 参考http://www.itfanr.cc/2017/01/06/use-sqlalchemy-by-python/ # codingutf-8from sqlalchemy import create_engine from sqlalchemy.ext.declarative import declarative_base from sqlalchemy import Column, Integer, String from sqlalchemy.orm import sessionmaker# 创建连接引擎 # echoTrue表示会用logger的方式打印传到数据库的SQL engine create_engine(sqlite:///./test.db, echoTrue)# 表格对象基类 Base declarative_base()# 创建会话的类 DBSession sessionmaker(bindengine)# 表格类 class User(Base):User table__tablename__ users # 表名__table_args__ {sqlite_autoincrement: True}# 表结构id Column(Integer, primary_keyTrue, autoincrementTrue)name Column(String(32), nullableFalse) # 有些数据库允许不指定String的长度age Column(Integer, default0)password Column(String(64), uniqueTrue)class Blog(Base):docstring for Blog__tablename__ blogsid Column(Integer, primary_keyTrue)title Column(String(100))desc Column(String(500))class Tips(Base):docstring for tips__tablename__ tipsid Column(Integer, primary_keyTrue)name Column(String(32))# 新增一条记录数据 def new_user():# 创建会话对象session DBSession()new_user User(nameJery,password123)session.add(new_user) # 只是添加在session中没有写到数据库session.commit()session.close()# 新增多条数据 def add_more_user():session DBSession()session.add_all([User(nameguanyu, age4, password11111),User(namezhangfei, password2233),User(namezhenji, password44556)])session.commit()session.close()# 新增数据含中文,只要用unicode的字符即可 def add_user_for_zh():session DBSession()new_user User(nameu关羽, password12322233)session.add(new_user)session.commit()session.close()# 查询 def query_user():session DBSession()q_user session.query(User).filter(User.id 4).one() # one表示结果有且仅有一个print(name, q_user.name)session.close() # 查询不用commit如果不commit会自动执行rollback# def delete_user():session DBSession()deleted_num session.query(User).filter(User.id 3).delete()print(deleted_num)session.commit()session.close()# c测试 def test_user():session DBSession()# merge方法如果存在就修改不存在就插入只判断主键不判断unique列t1 session.query(User).filter(User.name Jery).first()t1.age 34session.merge(t1)session.commit()# 获取第2-3项users session.query(User)[1:3]for u in users:print(u.name)session.close()# 执行sql语句 def sql_user():s DBSession()# 不能用 ? 的方式来传递参数 要用 :param 的形式来指定参数# s.execute(INSERT INTO users (name, age, password) VALUES (?, ?, ?),(bigpang,2,1122121))# 这样执行报错# s.execute(INSERT INTO users (name, age, password) VALUES (:aa, :bb, :cc),({aa:bigpang2,bb:22,cc:998}))# s.commit()# 这样执行成功res s.execute(select * from users where age:aaa, {aaa: 4})# print(res[name]) # 错误# print(res.name) # 错误# print(type(res)) # 错误for r in res:print(r[name])s.close()# 执行sql语句 def sql_user2():# **传统 connection方式**# 创建一个connection对象使用方法与调用python自带的sqlite使用方式类似# 使用with 来创建 conn不需要显示执行关闭连接# with engine.connect() as conn:# resconn.execute(select * from users)# datares.fetchone()# print(user is %s %data[1])# 与python自带的sqlite不同这里不需要 cursor 光标执行sql语句不需要commit。如果是增删改则直接生效也不需要commit.# **传统 connection 事务**with engine.connect() as conn:trans conn.begin()try:r1 conn.execute(select * from users)print(r1.fetchone())r2 conn.execute(insert into users (name,age,password) values (?,?,?), (tang, 5, 133444))print(r2)trans.commit()except:trans.rollback()raise# **session**session DBSession()session.execute(select * from users)session.execute(insert into users (name,age,password) values (:name,:age,:password),{name: dayuzhishui, age: 6, password: 887})# 注意参数使用dict并在sql语句中使用:key占位# 如果是增删改需要 commitsession.commit()# 用完记得关闭也可以用 withsession.close()if __name__ __main__:# 删除全部数据库Base.metadata.drop_all(engine)# 创建表格如果已经存在则不创建Base.metadata.create_all(engine)# 删除指定的表格Blog.__table__.drop(engine)# 新增数据new_user()# 新增多条数据add_more_user()# 新增数据含中文add_user_for_zh()# 查询query_user()# 删除delete_user()# 测试test_user()# 直接执行SQLsql_user()sql_user2() 用pycharm运行后的结构 六、小结 之前遇到过的ORM一般用在web场景SQLAlchemy作为一个独立组件而存在让我眼前一亮。同时它也十分优雅既可以使用ORM映射在必要的场合还可以直接运行SQL可谓数据处理的利器。 转载于:https://www.cnblogs.com/fanghao/p/9634173.html
http://wiki.neutronadmin.com/news/60001/

相关文章:

  • 龙岩做网站的地方有哪些建立网站实验总结
  • 一个网站服务器多少钱网站开发验收报告
  • 医院网站制作多少钱wordpress教程网模板
  • 企业网站开发丨薇建站之星网站 seo优化
  • 北京购物网站建设公司POS机网站怎么做
  • wordpress显示网站在线人数东莞app培训网站建设
  • 水产养殖网站模板源码wordpress建网站主页
  • 营口手机网站建设西安个人做企业网站
  • 网站开发怎么样专业做二手房的网站有哪些
  • 企业网站模板优化全国十大网站建设公司
  • 创建个人网站教案百度收录网站怎么做
  • 58同城兰州网站建设太原网站建设网站
  • 漂亮的网站建设中静态页门户网站seo前期
  • 青岛 公司 网站建设价格服务平台名称大全
  • 富阳网站制作学校局域网站建设
  • 安徽省建设干校学校网站移动端网站建设的方案
  • 明星网站怎么设计wordpress主题使用
  • 销售平台网站建设方案模板wordpress值得买主题
  • 怎么提高网站响应速度嘉兴网站建设的地方
  • 做苗木选择哪个网站上海注册公司需要多少钱
  • 免费空间 上传网站购物网站 购物车界面如何做
  • 食品网站设计网络营销服务概念
  • 网站设计与建设实训静态网站如何添加关键词
  • 海纳企业网站建设软文吧
  • 网站绑定两个域名怎么做跳转iis7 新建网站
  • 电子商务网站开发数据库表格深圳有几个区地图
  • 贵阳市观山湖区网站建设动态设计参考网站
  • 网站报价详情金山石化网站建设
  • 手机网站源码带后台最简单的安卓开发工具
  • 扬州门户网站开发wordpress还能用