python sqlalchemy oracle 中文_sqlalchemy中文问题解决方案

本文介绍了在使用Python的SQLAlchemy库与Oracle数据库交互时遇到的中文乱码问题及解决方案。通过调整数据库连接URL参数,设置`charset=utf8`,成功解决了插入中文数据时出现的乱码问题。
摘要由CSDN通过智能技术生成

sqlalchemy是python下一个很强大的ORM,最近刚刚开始使用。当然由于只是刚刚接触,只学习使用了他的DB API,对于Mapper还有些不得要领。

最近写的一个程序,用到MySql数据库,有些数据库读写的操作,对sqlalchemy已经有了些了解,自然要练练,更何况它能大幅度的提高程序开发的效率。于是就驱动sqlalchemy,用它开始了第一个数据库应用程序的编写。

代码说话:

#coding=utf-8

from sqlalchemy import *connstr= 'mysql://uid:pwd@localhost/mydb'db= create_engine(connstr, echo=True)

metadata=MetaData(db)

table= Table('mytable', metadata, autoload=True)

i=table.insert()

i.execute(c1='value')

我通过上面的代码连接连接到数据库,打开表并执行插入数据的操作。执行程序,检查结果,ok,没有问题,心里一阵暗爽。

但当我

把这段代码加入到程序中时,问题出来了,所有插入的中文全部是乱码,囧。按照常规思路,比较简单的做法是对中文进行编码转化.我的数据库表使用的是

utf-8编码,于是写了这样的代码:'中文'.decode('gbk').encode('utf8'),结果依然是乱码。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用 `create_engine` 方法创建 SQLAlchemy 引擎对象可以连接到数据库,并允许你执行 SQL 查询和操作数据库。 以下是使用 `create_engine` 方法的基本语法: ```python from sqlalchemy import create_engine # 创建一个引擎对象 engine = create_engine('dialect+driver://user:password@host:port/database') ``` - `dialect`:数据库类型,例如 `mysql`、`sqlite`、`postgresql` 等。 - `driver`:驱动程序,帮助 SQLAlchemy 与数据库交互。 - `user`:用户名。 - `password`:密码。 - `host`:连接的主机名。 - `port`:连接的端口号。 - `database`:要连接的数据库名称。 例如,连接到本地 SQLite 数据库: ```python from sqlalchemy import create_engine # 创建一个引擎对象 engine = create_engine('sqlite:///example.db') ``` 连接到远程 MySQL 数据库: ```python from sqlalchemy import create_engine # 创建一个引擎对象 engine = create_engine('mysql+pymysql://user:password@host:port/database') ``` 连接到远程 PostgreSQL 数据库: ```python from sqlalchemy import create_engine # 创建一个引擎对象 engine = create_engine('postgresql://user:password@host:port/database') ``` 连接到远程 Oracle 数据库: ```python from sqlalchemy import create_engine # 创建一个引擎对象 engine = create_engine('oracle://user:password@host:port/database') ``` 创建完引擎对象后,你可以使用 `execute` 方法来执行 SQL 查询和操作数据库。例如,执行一个查询: ```python result = engine.execute('SELECT * FROM my_table') ``` 这将返回一个 `ResultProxy` 对象,你可以使用它来获取查询结果。例如,获取查询结果的所有行: ```python rows = result.fetchall() ``` 或获取查询结果的第一行: ```python row = result.fetchone() ``` 你还可以使用 `execute` 方法来执行 SQL 插入、更新或删除操作。例如,插入一行数据: ```python engine.execute("INSERT INTO my_table (column1, column2) VALUES ('value1', 'value2')") ``` 更多关于 SQLAlchemy 的详细信息请参考官方文档:https://docs.sqlalchemy.org/en/14/core/engines.html
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值