为什么pymysql执行SQL语句提示成功但实际并没有操作数据库?

开发环境:Anaconda3+PyCharm2018

问题:使用pymysql插入数据提示成功,连接数据库发现并没有数据。

原因:

pymysql在连接数据库的时候会有一个参数autocommit默认为False,表示执行完SQL语句后是否自动提交到真正的数据库,如果没有设置为True,那么你执行sql过后,是需要显式提交的,即conn.commit()。

我们也可以在在创建pymysql.connect()的连接对象的时候显式赋值autocommit=True,文末附上connect()函数的全部字段。

代码实例:

:param host: Host where the database server is located:param user: Username to log in as:param password: Password to use.:param database: Database to use, None to not use a particular one.:param port: MySQL port to use, default is usually OK. (default: 3306):param bind_address: When the client has multiple network interfaces, specify    the interface from which to connect to the host. Argument can be    a hostname or an IP address.:param unix_socket: Optionally, you can use a unix socket rather than TCP/IP.:param charset: Charset you want to use.:param sql_mode: Default SQL_MODE to use.:param read_default_file:    Specifies  my.cnf file to read these parameters from under the [client] section.:param conv:    Conversion dictionary to use instead of the default one.    This is used to provide custom marshalling and unmarshaling of types.    See converters.:param use_unicode:    Whether or not to default to unicode strings.    This option defaults to true for Py3k.:param client_flag: Custom flags to send to MySQL. Find potential values in constants.CLIENT.:param cursorclass: Custom cursor class to use.:param init_command: Initial SQL statement to run when connection is established.:param connect_timeout: Timeout before throwing an exception when connecting.    (default: 10, min: 1, max: 31536000):param ssl:    A dict of arguments similar to mysql_ssl_set()'s parameters.    For now the capath and cipher arguments are not supported.:param read_default_group: Group to read from in the configuration file.:param compress: Not supported:param named_pipe: Not supported:param autocommit: Autocommit mode. None means use server default. (default: False):param local_infile: Boolean to enable the use of LOAD DATA LOCAL command. (default: False):param max_allowed_packet: Max size of packet sent to server in bytes. (default: 16MB)    Only used to limit size of "LOAD LOCAL INFILE" data packet smaller than default (16KB).:param defer_connect: Don't explicitly connect on contruction - wait for connect call.    (default: False):param auth_plugin_map: A dict of plugin names to a class that processes that plugin.    The class will take the Connection object as the argument to the constructor.    The class needs an authenticate method taking an authentication packet as    an argument.  For the dialog plugin, a prompt(echo, prompt) method can be used    (if no authenticate method) for returning a string from the user. (experimental):param db: Alias for database. (for compatibility to MySQLdb):param passwd: Alias for password. (for compatibility to MySQLdb):param binary_prefix: Add _binary prefix on bytes and bytearray. (default: False)"""

原文地址:http://blog.51cto.com/xvjunjie/2118163

时间: 2024-10-03 22:55:57

为什么pymysql执行SQL语句提示成功但实际并没有操作数据库?的相关文章

【数据库_Postgresql】实体类映射问题之不执行sql语句

后台controller到dao都没问题,前台页面接收的是一个实体类对象,在service层接收的也是对象,传入mapper里面的也是对象,没有用map,但是打印台却不执行sql语句,也没有明显错误提示. 最后发现原因所在,贴出原来的sql语句和更改后成功执行的sql语句,可以看出别名和if test判断去除之后便可以执行.具体是因为别名还是if test有兴趣的朋友可以测试一下,我就不试了. 原来的代码 <select id="queryByPrimaryKey" parame

JDBC进阶之PreparedStatement执行SQL语句(MySQL)

一.什么是PreparedStatement 参阅Java API文档,我们可以知道,PreparedStatement是Statement的子接口(如图所示),表示预编译的 SQL 语句的对象,SQL 语句被预编译并存储在PreparedStatement 对象中.然后可以使用此对象多次高效地执行该语句. 二.通过PreparedStatement获取在运行命令行中执行的参数,将参数插入到某张数据表中 相关的实验过程,包括在预先创建程序所需数据库.创建所需数据表格.在开发环境中加载驱动程序包等

linux程序设计——执行SQL语句(第八章)

8.3    使用C语言访问MySQL数据 8.3.3 执行SQL语句 执行SQL语句的主要API函数被恰当的命名为: int mysql_query(MYSQL *connection, const char *query); 这个例程接受连接结构指针和文本字符串形式的有效SQL语句,如果成功,它返回0. 1.不返回数据的SQL语句 为简单起见,先看一些不返回任何数据的SQL语句:UPDATE,DELETE和INSERT. 下面的函数用于检查受查询影响的行数: my_ulonglong mys

让你提前认识软件开发(20):如何在C语言里面执行SQL语句?

[文章摘要] 在通信类软件中,程序经常需要与数据库打交道.为了实现诸如从数据库中获取数据.更新数据库表某字段.插入或删除某条数据等功能,就需要在C语言程序中构造一些SQL语句,并用函数来执行这些SQL语句. 本文介绍如何在C语言程序中构造并执行SQL语句,为相关软件开发工作的开展提供了参考. [关键词] SQL语句  C语言  程序  流程  开发 一.为什么要在C语言程序中执行SQL语句? 在C语言程序中执行SQL语句的原因有以下几个: (1) 程序需要获取数据库中某数据表的字段值,并对这些字

在EF中执行SQL语句

你可能要问,我用EF不就为了避免写SQL吗?如果要写SQL我不如直接用ADO.NET得了.话虽然这么说没错,可有些时候使用EF操作数据还是有一些不方便,例如让你根据条件删除一组记录,如果按照正常的流程来走,你就得先把这些数据查出来,然后再一条一条地删除它们,这样不仅麻烦而且性能也比较低.这种情况下SQL就显示出它的威力了. 而使用EF执行SQL又比ADO.NET方便,特别是在执行查询语句的时候,EF会把查询到的数据自动保存到数据实体中,省去了使用DataReader的麻烦.同时查询出来的数据还会

SQL*PLUS中批量执行SQL语句

SQL*PLUS中批量执行SQL语句 今天由于工作的需要,要在CMD中批量执行大量的SQL语句,对于Oracle学习还处在入门阶段的我,只能硬着头皮到处去寻找资料(主要是网络资料,也包括自己的电子书),最后将所有的SQL语句一次性的执行完成. 首先,将要执行的所有的SQL语句,全部写入某个sql文件当中.例如f:\test.sql; 然后,通过通过sqlplus连接到数据库:如: SQL> sqlplus test/[email protected]; 再执行如下命令: SQL> @f:\te

DB操作-用批处理执行Sql语句

用批处理在命令行状态下调用查询分析器来执行这个sql文件里的语句.下面就是sqlserver帮助里对于查询分析器(isqlw)命令行参数的解释:isqlw 实用工具(SQL 查询分析器)使您得以输入 Transact-SQL 语句.系统存储过程和脚本文件.通过设置快捷方式或创建批处理文件,可以启动预配置的 SQL 查询分析器. 1.语法 isqlw     [-?] |      [          [-S server_name[instance_name]]          [-d da

mysqli扩展库应用---批量执行sql语句

1, mysqli批量执行sql语句.基本语法: $sqls=”sql1;sql2;………” mysqli::multi_query($sqls); 同一个$sqls要么是增删改语句集合,要么是查询语句的集合,查询语句和增删改最好不要混合.应用示例如下: ① 操作数据库的代码: <?php class mysqliMutiTool{ private $mysqli = null; private static $host = "10.252.158.217"; private s

Oracle执行SQL语句的过程

转载至:http://blog.csdn.net/aqszhuaihuai/article/details/7024551 当我们提交一条sql语句时,Oracle会做哪些操作呢? Oracle会为每个用户进程分配一个服务器进程:service process(实际情况应该区分专用服务器和共享服务器),当service process接收到用户进程提交的sql语句时,服务器进程会对sql语句进行语法和词法分析. 名词解释: 语法分析:语句本身正确性. 词法分析:对照数据字典中检查表,索引,视图和