#encoding: utf-8

from sqlalchemy import create_engine,Column,Integer,String,Float,func,and_,or_
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
from random import randint HOSTNAME = '127.0.0.1' PORT = 3306 DATABASE = 'first_sqlalchemy' USERNAME = 'root' PASSWORD = '' #dialect+driver://username:password@host:port/database
DB_URI = "mysql+pymysql://{username}:{password}@{host}:{port}/" \
"{db}?charset=utf8".format(username=USERNAME,password=PASSWORD,host=HOSTNAME,port=PORT,db=DATABASE) engine = create_engine(DB_URI) Base = declarative_base(engine) # Session = sessionmaker(engine)
# session = Session() session = sessionmaker(engine)() #Session(**local_kw) class Article(Base):
__tablename__ = 'article' id = Column(Integer,primary_key=True,autoincrement=True) title = Column(String(50),nullable=False) price = Column(Float,nullable=False) content = Column(String(100)) def __repr__(self):
return '<Article(title:%s)>'%self.title # Base.metadata.drop_all()
#
# Base.metadata.create_all()
#
# for x in range(6):
# article = Article(title='title%s'%x,price=randint(0,100))
# session.add(article)
# session.commit() # 1、equal 等于的意思
article = session.query(Article).filter(Article.id == 1).first() article_title = session.query(Article).filter(Article.title == 'title1').first()
print(article)
print(article_title) # 2、not equal 不等于的意思 article_title_not_equal = session.query(Article).filter(Article.title != 'title0').all() print(article_title_not_equal) #3、like #注意:如果不查询,直接打印显示原生sql,不用first()或 all()方法
article_title_like = session.query(Article).filter(Article.title.like('title%') ).all()
#相当于sql select * from article where title like '%title%'; print(article_title_like)
#插入一条数据的sql :insert into article values(null,'abc','100'); # 4、ilike(不区分大小写)
article_title_ilike = session.query(Article).filter(Article.title.ilike('title%') )
print(article_title_ilike)
#SELECT article.id AS article_id, article.title AS article_title, article.price AS article_price FROM article
# WHERE lower(article.title) LIKE lower(%(title_1)s) # 5、in (在某某里面) #为什么用in_,因为要避开关键字in
article_title_in = session.query(Article).filter(Article.title.in_(['title1','title2'])).all() print(article_title_in) #原生sql SELECT article.id AS article_id, article.title AS article_title, article.price AS article_price
# FROM article
# WHERE article.title IN (%(title_1)s, %(title_2)s)%('title1','title2'),这是格式化字符串,防止sql注入 #6、not in (不在某某里面) article_title_not_in = session.query(Article).filter(Article.title.notin_(['title1','title2'])).all() print(article_title_not_in) #not in (另一种写法) ~取反的意思 article_title_not_in_1 = session.query(Article).filter(~Article.title.in_(['title1','title2'])).all() print(article_title_not_in_1) # 7、is null 判断某个字段是否为空 # alter table article add column content text; 添加一列,
# 修改原先好的类别 alter table article modify column content varchar(100);
# update article set content='python or go' where id =7; 修改一条记录 is_null_content = session.query(Article).filter(Article.content == None).all() print(is_null_content) # not is null 不为空 not_is_null_content = session.query(Article).filter(Article.content != None) print(not_is_null_content) '''
SELECT article.id AS article_id, article.title AS article_title, article.price AS article_price,
article.content AS article_content
FROM article
WHERE article.content IS NOT NULL
''' #8、and 和 title_and_content = session.query(Article).\
filter(Article.title == 'python or go',Article.content == 'python or go').all()
print(title_and_content) #另一种显示方式 title_and_content_1 = session.query(Article).\
filter(and_(Article.title == 'python or go',Article.content == 'python or go'))
print(title_and_content_1) #原生sql显示SELECT article.id AS article_id, article.title AS article_title,
# article.price AS article_price, article.content AS article_content
# FROM article
# WHERE article.title = %(title_1)s AND article.content = %(content_1)s #9.or
title_or_content = session.query(Article).filter\
(or_(Article.title == 'python or go',Article.content == 'python or go')).all()
print(title_or_content)

最新文章

  1. 【总结】虚拟机VirtualBox各种使用技巧
  2. java Map迭代
  3. 20145225《Java程序设计》 实验三 &quot;敏捷开发与XP实践&quot;
  4. c语言宏定义
  5. 修改 eclipse 文件编码格式
  6. Designing Evolvable Web API with ASP.NET 随便读,随便记 “The Internet,the World Wide Web,and HTTP”——HTTP
  7. 福建省队集训被虐记——DAY2
  8. Fix Elementary Boot Screen (plymouth) After Installing Nvidia Drivers
  9. 如何正确的在java web配置数据池
  10. HDU 1754 I Hate It (段树 &amp;amp; 树阵)
  11. 在线GET/POST API接口请求模拟测试工具
  12. 关于ie的h5 刷新和ctrl+5刷新 以及图标刷新的问题
  13. Dos下的小技巧
  14. ●BZOJ 3172 [Tjoi2013]单词
  15. 强化学习(四)用蒙特卡罗法(MC)求解
  16. 原生js实现平滑滚动
  17. Linux的用户管理(基础篇)
  18. Linux每天一个命令:grep
  19. Miniconda 虚拟环境安装及应用
  20. 001之IP基础对话框

热门文章

  1. VIDENT iSmart900自动多系统扫描工具OBDII支持ABS / SRS / EPB /传输诊断DPF再生/上油复位编码电池配置
  2. docker 卸载与安装
  3. 未关闭虚拟机直接关闭vmware引发的一系列问题——Windows下linux虚拟机
  4. 两篇将rf和boosting方法用在搜索排序上的paper
  5. python用BeautifulSoup解析源码时,去除空格及换行符
  6. JAVA异常及其异常处理方式
  7. eclipse外部导入Javaweb项目时,项目上出现红叉的一个可能的解决办法
  8. (十八)C语言之预编译命令、宏
  9. Location of Docker images in all Operating Systems (Linux, Windows, Redhat, Mac OS X)
  10. PHP中Smarty的fetch()方法