python+ sqlalchemy实现orm创建表和查询操作

Posted 两颗心的章鱼

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python+ sqlalchemy实现orm创建表和查询操作相关的知识,希望对你有一定的参考价值。

ORM连接错误

错误码:\\python35\\lib\\site-packages\\pymysql\\cursors.py:166: Warning: (1366, "Incorrect string value: \'\\\\xD6\\\\xD0\\\\xB9\\\\xFA\\\\xB1\\\\xEA...\' for column \'VARIABLE_VALUE\' at row 480")
  result = self._query(query)
解决方案

pip install mysql-connector-python
pip install mysql
pip install pymysql

将连接引擎的:
mysql+pymysql engine = create_engine("mysql+pymysql//user:password@host/{data_base}",encoding=\'utf-8\') 
修改为:
mysql+mysqlconnector engine = create_engine("mysql+mysqlconnector//user:password@host/{data_base}",encoding=\'utf-8\')
就是将pymysql连接数据库换成了,官方的连接引擎!然后问题解决了!

python+sqlalchemy实现查询

from sqlalchemy import  create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column,Integer,String #区分大小写
from sqlalchemy.orm import sessionmaker
# 这里使用的是mysqlconnector 而没用使用pymysql,因为在是使用pymysql出现了错误报错
# 转至https://www.cnblogs.com/shiqi17/p/9409228.html
engine=create_engine("mysql+mysqlconnector://root:root@localhost/quey",encoding=\'utf-8\',echo=True)
#生成orm基类
base=declarative_base()
class user(base):
    __tablename__ = \'users\' #表名
    id = Column(Integer, primary_key=True)
    name = Column(String(32))
    password = Column(String(64))

class class_name(base):
    __tablename__ = \'class\'  # 表名
    id = Column(Integer, primary_key=True)
    name = Column(String(32))
    password = Column(String(64))
    password1 = Column(String(64))

base.metadata.create_all(engine) #创建表结构
Session_class=sessionmaker(bind=engine) ##创建与数据库的会话,class,不是实例

# #生成session实例
Session = Session_class()
# for i in range(0,10):
#
#     user_obj = user(name="{}".format(i),password="123456") #插入你要创建的数据对象,每执行一次都会新增一次数据。
#     # print(user_obj.name,user_obj.id,\'1111\') #此时还没创建对象呢,不信你打印一下id发现还是None
#
#     Session.add(user_obj)#把要创建的数据对象添加到这个session里
#     # print(user_obj.name,user_obj.id,\'2222\') #此时也依然还没创建
#     Session.commit() #提交,使前面修改的数据生效

# 只查询第一条记录
result = Session.query(user).first()
print(type(result.id),type(result.name),type(result.password))
print("第一条查询结果:" + str(result.id),result.name,result.password)

# 通过ID字段查询
result = Session.query(user).filter_by(id=2).first()
print("ID值查询结果:" + str(result.id),result.name,result.password)

# 分页查询 0,2
result = Session.query(user).filter(user.id>1).limit(5).offset(10).all()
for i in result:
    print(i.id,i.name,i.password)
# 根据主键查询
result = Session.query(user).get(3)
print(result.name)

# 新增和修改
# 新增
news = user(name="我是",password="新增测试标题")
Session.add(news)
Session.commit()

#修改
Session.query(user).filter(user.id==7).update({"password":"修改之后的标题"})
Session.commit()

以上是关于python+ sqlalchemy实现orm创建表和查询操作的主要内容,如果未能解决你的问题,请参考以下文章

python orm框架SQLAlchemy简单应用(数据库操作)

SQLAlchemy -- Python的SQLAlchemy和ORM

Python学习笔记八:ORM框架SQLAlchemy

Python学习 Day17 Python对Mysql操作和使用ORM框架(SQLAlchemy)

ORM框架之SQLAlchemy

python 学习笔记十一 SQLALchemy ORM(进阶篇)