sqlalchemy中让MySQL支持中文字符

engine = create_engine("mysql+pymysql://root:mysql8@localhost/mysqltest?charset=utf8", encoding='utf-8')

import sqlalchemy
from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column, Integer, String
from sqlalchemy.orm import sessionmaker
from sqlalchemy import func # 建立连接。通过pymysql执行原生SQL,加echo打印出信息,不加就不打印
engine = create_engine("mysql+pymysql://root:mysql8@localhost/mysqltest",
encoding='utf-8',) #echo=True)
# 生成ORM基类
Base = declarative_base()
# 表对象继承基类
class User(Base):
__tablename__ = 'user' # 表名
id = Column(Integer, primary_key=True)
name = Column(String(32))
password = Column(String(64))
def __repr__(self):
return "<id:%s name:%s> " % (self.id, self.name)
# 创建表结构,创建每个表都继承这个类。一执行可以把所有都创建完
Base.metadata.create_all(engine)
'''
表创建完了,现在来创建一条数据
'''
# 创建与数据库的Session_class类
Session_class = sessionmaker(bind=engine)
# 生成session实例,类似于cursor
session = Session_class()
# 生成要创建的数据对象
user_obj = User(name="alex", password="alex3714")
user_obj1 = User(name="jack", password="jack1234")
print(user_obj.name,user_obj.password, user_obj.id)
# 加入到session
session.add(user_obj)
session.add(user_obj1)
print(user_obj.name, user_obj.password, user_obj.id)
# 提交,创建数据
session.commit()
print(user_obj.name, user_obj.password, user_obj.id) '''
现在查询name="alex"的所有数据放在对象列表,
打印的地址,加个repr方法可以打印格式化数据
filter_by和filter随便,哪个管用就哪个
'''
data = session.query(User).filter_by(name="alex").filter_by(id=1).all()
print(data)
'''
修改
'''
data[0].name = "Alex Li"
data[0].password = ""
session.commit()
print(session.query(User).filter_by(id=1).all())
# '''
# 回滚
# '''
# fake_user = User(name='Rain', password='12345')
# session.add(fake_user)
# # 这时看session里有你刚添加和修改的数据
# print(session.query(User).filter(User.name.in_(['Jack', 'rain'])).all())
# # 此时你rollback一下
# session.rollback()
# # 再查就发现刚才添加的数据没有了。
# print(session.query(User).filter(User.name.in_(['Jack', 'rain'])).all())
# # Session
# # Session.commit()
'''
统计
'''
count = session.query(User).filter(User.id>0).count()
print(count)
'''
分组,统计每个名字出现的次数
'''
result = session.query(User.name, func.count(User.name)).group_by(User.name).all()
print(result)
'''
删除数据
'''
session.delete(session.query(User).filter_by(id=1).first())
session.commit()
print(session.query(User).all()) '''打印结果:
alex alex3714 None
alex alex3714 None
alex alex3714 1
[<id:1 name:alex> ]
[<id:1 name:Alex Li> ]
2
[('Alex Li', 1), ('jack', 1)]
[<id:2 name:jack> ]
'''

SQLAlchemy增删改查的更多相关文章

  1. SQLAlchemy 增删改查 一对多 多对多

    1.创建数据表 # ORM中的数据表是什么呢? # Object Relation Mapping # Object - Table 通过 Object 去操纵数据表 # 从而引出了我们的第一步创建数 ...

  2. SQLAlchemyの增删改查

    用a*my写原味sql from sqlalchemy.ext.declarative import declarative_base from sqlalchemy import Column, I ...

  3. 13,SQLAlchemy 增删改查 一对多 多对多

    今天来聊一聊 Python 的 ORM 框架 SQLAlchemy Models 是配置和使用比较简单,因为他是Django自带的ORM框架,也正是因为是Django原生的,所以兼容性远远不如SQLA ...

  4. SQLAlchemy 增删改查 一对一 多对多

    首先要导入SQLAIchemy模块 from sqlalchemy.ect.declaative import declarative_base 创建orm基类 Base = declarative_ ...

  5. SQLAlchemy增删改查基本操作,及SQL基本技能样码(join,group)

    练了一天,基本的东东应该有感觉了. #coding=utf-8 from datetime import datetime from sqlalchemy import (MetaData, Tabl ...

  6. 偏于SQL语句的 sqlAlchemy 增删改查操作

    ORM 江湖 曾几何时,程序员因为惧怕SQL而在开发的时候小心翼翼的写着sql,心中总是少不了恐慌,万一不小心sql语句出错,搞坏了数据库怎么办?又或者为了获取一些数据,什么内外左右连接,函数存储过程 ...

  7. SQLAlchemy表操作和增删改查

    一.SQLAlchemy介绍 SQLAlchemy是一个基于Python实现的ORM框架.该框架建立在 DB API之上,使用关系对象映射进行数据库操作,简言之便是:将类和对象转换成SQL,然后使用数 ...

  8. SQLAlchemy的使用---增删改查

    #通过SQLAlchemy对数据库进行增删改查 # 想要操作数据库 先要打开数据库连接 from create_table import engine # 创建会话 - 打开数据库连接 from sq ...

  9. sqlalchemy基本的增删改查

    #encoding: utf-8 from sqlalchemy import create_engine,Column,Integer,String from sqlalchemy.ext.decl ...

随机推荐

  1. PHP分页倒序时,需要注意的问题

    PHP分页倒序请求,如果有新数据加入,下一页会出现重复数据 解决方案: 第一次查询时,给前端返回一个查询时间戳,下一次请求时,把时间戳带过来,只查询比这个时间戳小的数据

  2. MacPro4,1升级到MacPro5,1

    收了一台老MacPro,2009年版本,准确型号是"MacPro4,1".机器很好,美中不足的是,太老了.硬件还好说,很多部件都可以单独采购升级,特别是有了淘宝,几乎只要有的东西, ...

  3. Chapter 5 Blood Type——19

    "Are you feeling faint?" “你感觉头晕吗?” "Yes, sir," I muttered, internally kicking my ...

  4. C语言实现链队列的初始化&进队&出队

    /*链表实现队列的一系列操作*/ #include<stdio.h> #include<stdlib.h> #define OK 1 #define ERROR 0 typed ...

  5. leetcode — remove-duplicates-from-sorted-array-ii

    /** * Source : https://oj.leetcode.com/problems/remove-duplicates-from-sorted-array-ii/ * * * Follow ...

  6. Linux基础知识第七讲,用户权限以及用户操作命令

    目录 Linux基础知识第七讲,用户权限以及用户操作命令 一丶简介linux用户,用户权限,组的概念. 1.1 基本概念 1.2 组 1.3 ls命令查看权限. 二丶用户权限修改命令 1.chmod ...

  7. 【Node.js】利用node.js搭建服务器并访问静态网页

    node.js是一门服务端的语言,下面讲讲如何利用node.js提供给我们的api来搭建服务器,并且访问静态网页 项目结构如下 ------------------------------------ ...

  8. Jquery 强大的表单验证操作

    参考资料: 1.https://www.cnblogs.com/linjiqin/p/3431835.html(此篇最佳) 2.https://blog.csdn.net/pengjunlee/art ...

  9. ORA-01940 无法删除当前已连接的用户之解决方案

    在执行drop user的时候,提示报错信息:ORA-01940: cannot drop a user that is currently connected SQL> drop user l ...

  10. Nunit的尝试

    (ps:没有代码,只有理论) 单元测试 单元测试(Unit Test)的一个测试用例(Test Case)是一小段代码,用于测试一个小的程序功能的行为是否正常,保证开发的功能子项能正确完成并实现其基本 ...