首页 热点资讯 义务教育 高等教育 出国留学 考研考公
您的当前位置:首页正文

python4 sqlalchemy模块学习

2023-11-11 来源:华拓网
sqlalchemyfrom sqlalchemy import create_enginefrom sqlalchemy.ext.declarative import declarative_basefrom sqlalchemy import Column, Integer, String#创建一个实例,mysql+pysql 是说sqlalchemy利用Pymysql底层支持engine = create_engine("mysql+pymysql://root:123456@localhost/mysql", encoding=‘utf-8‘, echo=True)Base = declarative_base() #生成orm基类#创建user类的时候继承该基类,column我就是帮你自动转换成mysql的格式class User(Base): __tablename__ = ‘user4‘ #表名 id = Column(Integer, primary_key=True) name = Column(String(32)) password = Column(String(64))Base.metadata.create_all(engine) #创建表结构#这样我们就完成了在mysql下创建了 id 为主键 ,name,password 的名为 User4的表
Session_class = sessionmaker(bind=engine) #创建与数据库的会话session class ,注意,这里返回给session的是个class,不是实例Session = Session_class() #生成session实例 user_obj = User(name="alex",password="alex3714") #生成你要创建的数据对象print(user_obj.name,user_obj.id) #此时还没创建对象呢,不信你打印一下id发现还是None Session.add(user_obj) #把要创建的数据对象添加到这个session里, 一会统一创建print(user_obj.name,user_obj.id) #此时也依然还没创建 Session.commit() #现此才统一提交,创建数据#综合起来就是 创一个表结构后 往里面输入数据 放在第一写法中!!!!!!

 

echo=True 会显示大量的结果,如果我们去掉的话那么则不print大量的数据在面板上了!

技术分享

查询我们会发现创建成功!

另外一种创建方式,不过不常用!

from sqlalchemy import Table, MetaData, Column, Integer, String, ForeignKeyfrom sqlalchemy.orm import mapper#相当于创建一个实例,开始创建metadata = MetaData()#利用Table,传入metadata,之后利用 Columnuser = Table(‘user‘, metadata, Column(‘id‘, Integer, primary_key=True), Column(‘name‘, String(50)), Column(‘fullname‘, String(50)), Column(‘password‘, String(12)) )#创建一个类class User(object): def __init__(self, name, fullname, password): self.name = name self.fullname = fullname self.password = password mapper(User, user) #二者联系在一起创建一个表!!!

 

事实上,我们用第一种方式创建的表就是基于第2种方式的再封装。

 

2.创建完之后我进行学习增删改查!

查询:

#查询在User表中 name=a 的返回

my_user = Session.query(User).filter_by(name="a").first()print(my_user)

我们获得结果是这样的:<__main__.User object at 0x105b4ba90> 这是一个对象 我们如何能清楚的看见内容呢?在上面第一段代码中我们创建的类里面添加一个这样的函数我们就会格式化的输出 他的名字 以及 密码

def __repr__(self): return "<User(name=‘%s‘, password=‘%s‘)>" % ( self.name, self.password)

查询所有的数据

print(Session.query(User.name,User.id).all() ) #查以一个数据我们用的是first

多条件查询

objs = Session.query(User).filter(User.id>0).filter(User.id<7).all()  #查询所有大于0小于7的数据并返回给objs

objs = Session.query(User).filter_by(id=number).all() #查询等于数字Number的数据并返回给objs

修改

my_user = Session.query(User).filter_by(name="alex").first() my_user.name = "Alex Li" Session.commit()

回滚:

my_user = Session.query(User).filter_by(id=1).first()my_user.name = "Jack" fake_user = User(name=‘Rain‘, password=‘12345‘)Session.add(fake_user) print(Session.query(User).filter(User.name.in_([‘Jack‘,‘rain‘])).all() ) #这时看session里有你刚添加和修改的数据 Session.rollback() #此时你rollback一下 print(Session.query(User).filter(User.name.in_([‘Jack‘,‘rain‘])).all() ) #再查就发现刚才添加的数据没有了。 # Session# Session.commit()

统计:

#统计一Ra开头的所有数据!返回其数量!

Session.query(User).filter(User.name.like("Ra%")).count()

分组:

统计name的数量分组并打印!

from sqlalchemy import funcprint(Session.query(func.count(User.name),User.name).group_by(User.name).all() )

 

python4 sqlalchemy模块学习

标签:注意   基类   mapper   ini   span   orm   utf-8   div   str   

小编还为您整理了以下内容,可能对您也有帮助:

如何理解python的sqlalchemy这种orm框架

回答这个问题之前,首先让我们回顾一下,一个关系数据库中都有什么?没错,简单来说,就是一张张表。表中又有什么?行和列,一行就是一条记录,一列就代表着一条记录的某个属性。举例来说,一个学籍数据库可能包含一张学生信息表,表中每行记录着一个学生的信息,由很多列组成,每一列表示学生的一个属性,比如姓名、年龄、入学时间……

有没有觉得和python中的类、实例对象以及成员属性的概念有某种映射关系呢?哈,没错,orm其实就是把表映射成了类,它包含一些成员属性,相当于一个模板,通过这个模板,我们给相应的属性填上一个值,可以创建一个实例对象也就是一条记录。然后把常用的一些SQL操作封装成对应的方法,比如select封装为get方法,这样就实现了一个orm。

当然,如果要自己写一个orm,技术层面上,你还需要去理解什么是元类、如何使用元类,以及一些有关描述器的知识。

python sqlalchemy 查询条件怎么写

通过Flask-SQLAlchemy提供的一个query属性,当你通过model类的query属性,你可以得到一个数据库表的查询结果集。
  i.User.query.filter_by(username='peter').first(),通过filter_by方法里的条件表达式来对query所得到的结果集进行过滤,得到你想要得到的结果。
   example:
    Retrieve a user by username通过username属性为’peter‘过滤结果集:
    >>> peter = User.query.filter_by(username='peter').first()
    >>> peter.id
    1
    >>> peter.email
    u'peter@example.org'
   当不存在结果集时返回none:
    >>> missing = User.query.filter_by(username='missing').first()
    >>> missing is None
    True 

python sqlalchemy 查询条件怎么写

通过Flask-SQLAlchemy提供的一个query属性,当你通过model类的query属性,你可以得到一个数据库表的查询结果集。
  i.User.query.filter_by(username='peter').first(),通过filter_by方法里的条件表达式来对query所得到的结果集进行过滤,得到你想要得到的结果。
   example:
    Retrieve a user by username通过username属性为’peter‘过滤结果集:
    >>> peter = User.query.filter_by(username='peter').first()
    >>> peter.id
    1
    >>> peter.email
    u'peter@example.org'
   当不存在结果集时返回none:
    >>> missing = User.query.filter_by(username='missing').first()
    >>> missing is None
    True 

Python中怎么使用flack_sqlalchemy查询过滤器获取免费课程?

确保已经在Flask应用程序中安装了`Flask-SQLAlchemy`扩展,并已正确配置数据库连接。定义一个`Course`类来表示课程信息:

class Course(db.Model):

id = db.Column(db.Integer, primary_key=True)

name = db.Column(db.String(100))

price = db.Column(db.Float)

然后在视图函数使用查询过滤器以获取免费课程:

from flask import jsonify

@app.route('/free_courses')

def get_free_courses():

free_courses = Course.query.filter(Course.price == 0).all()

course_list = []

for course in free_courses:

course_list.append({

'id': course.id,

'name': course.name,

'price': course.price

})

return jsonify(course_list)

在上面的例子中,`Course.query.filter(Course.price == 0).all()`语句使用了查询过滤器,以获取所有价格为0的课程。然后,将免费课程的信息转换为字典,并通过`jsonify`函数以JSON格式返回。

希望对您有所帮助!

在python3下怎样用flask-sqlalchemy对mysql数据库操作

这个问题经常难道新手一下,因为大部分教程里(包括经典的《Flask

Web开发》一书),告诉了我们如何使用flask-sqlalchemy操作sqlite,但在生产环境(线上网站)上,我们肯定是使用MySQL或其

他,而大部分的教程里,又告诉我们flask-sqlalchemy使用MySQL的方式是:

mysql://username:password@server/db

结果我们照葫芦画瓢的来一下,发现压根不行,写好的网站一跟数据库沾边就报错。

Python和MySQL是「两个国家的人」,他们互不相通,因而需要一个中间代理,让双方互通有无,跟翻译一样(这比喻不准确,但足够你明白意思就行)。翻译又有很多选择,不同的翻译各有特色。

主解决问题选择的翻译是「flask-mysqldb」,其背后的主子是「MySQL-python」。恩,说到这里你应该知道,「flask-xxx」

这样的包都是对背后主子进行了适合Flask封装的插件,跟包子皮一样,里面的馅才是重点,「flask-mysqldb」的馅是「MySQL-

python」。

而我要推荐的是另一个翻译:PyMySQL,这玩意的好处是可以做异步(「MySQL-python」也可以,个人口味罢了),简而言之,网站访问量大了就需要考虑异步,现在别管这是啥子。这玩意的安装方式是:

pip install PyMySQL

之后,数据库连接由:

mysql://username:password@server/db

改为

mysql+pymysql://username:password@server/db

就可以了。

显示全文