天天看点

python操作mysql数据库实现增删改查

cat 1.txt

tomcat  192.1.1.121

redis 192.1.1.121

CREATE TABLE `a` (

  `id` int(11) NOT NULL AUTO_INCREMENT,

  `ip` varchar(50) NOT NULL DEFAULT '',

  `apply` varchar(50) NOT NULL DEFAULT '',

  PRIMARY KEY (`id`)

) ENGINE=InnoDB AUTO_INCREMENT=65 DEFAULT CHARSET=utf8;

<code>#!/usr/bin/env python</code>

<code># -*- coding: utf-8 -*-</code>

<code>import</code> <code>sys</code>

<code>#import pymysql</code>

<code>#pymysql.install_as_MySQLdb()</code>

<code>import</code> <code>MySQLdb as mdb</code>

<code>con </code><code>=</code> <code>mdb.connect(</code><code>'192.1.1.197'</code><code>, </code><code>'root'</code><code>, </code><code>'xxxxxx'</code><code>, </code><code>'db03'</code><code>)</code>

<code>def</code> <code>db_execute(sql):</code>

<code>    </code><code>cursor </code><code>=</code> <code>con.cursor()</code>

<code>    </code><code>'''cursor.execute(sql)</code>

<code>    </code><code>con.commit()</code>

<code>    </code><code>cursor.close()'''</code>

<code>    </code><code>try</code><code>:</code>

<code>        </code><code>cursor.execute(sql)</code>

<code>        </code><code>con.commit()</code>

<code>        </code><code>cursor.close()</code>

<code>    </code><code>except</code><code>:</code>

<code>        </code><code>con.rollback()</code>

<code>def</code> <code>insert_template(file_path):</code>

<code>    </code><code>with </code><code>open</code><code>(file_path, </code><code>'r'</code><code>) as </code><code>file</code><code>:</code>

<code>        </code><code>for</code> <code>lines </code><code>in</code> <code>file</code><code>.readlines():</code>

<code>            </code><code>line </code><code>=</code> <code>lines.strip(</code><code>'\n'</code><code>).split()</code>

<code>            </code><code>print</code> <code>tuple</code><code>(line)</code>

<code>            </code><code># sql = 'insert table(field) values({0});'.format(line)</code>

<code>            </code><code>sql </code><code>=</code> <code>"INSERT INTO a(apply,ip) VALUES('%s','%s')"</code> <code>%</code><code>tuple</code><code>(line)</code>

<code>            </code><code>print</code> <code>sql</code>

<code>            </code><code>db_execute(sql)</code>

<code>    </code><code>#print sql_lines</code>

<code>def</code> <code>select_template():</code>

<code>    </code><code>sql </code><code>=</code> <code>'select bb.ip from b bb,a aa where bb.apply = aa.apply group by bb.ip'</code>

<code>    </code><code>cursor.execute(sql)</code>

<code>    </code><code>template_list </code><code>=</code> <code>cursor.fetchall()</code>

<code>    </code><code>res </code><code>=</code> <code>template_list</code>

<code>    </code><code>print</code> <code>res</code>

<code>    </code><code>for</code> <code>m </code><code>in</code> <code>res:</code>

<code>        </code><code>print</code> <code>type</code><code>(m[</code><code>0</code><code>])</code>

<code>    </code><code>#template_list = cursor.fetchall()</code>

<code>    </code><code>#print template_list</code>

<code>def</code> <code>test1():</code>

<code>    </code><code>id_list </code><code>=</code> <code>[</code><code>1</code><code>, </code><code>2</code><code>, </code><code>3</code><code>]</code>

<code>    </code><code>id_list </code><code>=</code> <code>','</code><code>.join([</code><code>str</code><code>(cursor.connection.literal(i)) </code><code>for</code> <code>i </code><code>in</code> <code>id_list])</code>

<code>    </code><code>print</code> <code>id_list</code>

<code>    </code><code>sql </code><code>=</code> <code>'SELECT col1, col2 FROM table1 WHERE id IN (%s)'</code> <code>%</code> <code>id_list</code>

<code>    </code><code>print</code> <code>sql</code>

<code>def</code> <code>select_template2():</code>

<code>    </code><code>id_list </code><code>=</code> <code>[</code><code>1</code><code>, </code><code>2</code><code>]</code>

<code>    </code><code>sql </code><code>=</code> <code>'SELECT * FROM a WHERE id IN %s'</code><code>, (id_list,)</code>

<code>    </code><code>#cursor.execute(sql)</code>

<code>    </code><code>cursor.execute(</code><code>'SELECT ip,apply FROM a WHERE id IN %s'</code><code>%</code> <code>(</code><code>tuple</code><code>(id_list),))</code>

<code>if</code> <code>__name__ </code><code>=</code><code>=</code> <code>'__main__'</code><code>:</code>

<code>    </code><code>file_path </code><code>=</code> <code>'1.txt'</code>

<code>    </code><code>insert_template(file_path)</code>

<code>    </code><code>#select_template()</code>

<code>    </code><code>select_template2()</code>

只写了插入和查询,其他类似。

改进版,先判断表中是否存在,在进行插入

<code>#!/usr/bin/env python2.7</code>

<code># import pymysql</code>

<code># pymysql.install_as_MySQLdb()</code>

<code>from</code> <code>ConfigParser </code><code>import</code> <code>ConfigParser</code>

<code># con = mdb.connect('172.1.1.1', 'root', 'root', 'db03')</code>

<code>def</code> <code>init_db():</code>

<code>  </code><code>try</code><code>:</code>

<code>    </code><code>con </code><code>=</code> <code>mdb.connect(host</code><code>=</code><code>conf.get(</code><code>'Database'</code><code>, </code><code>'host'</code><code>),</code>

<code>                </code><code>user</code><code>=</code><code>conf.get(</code><code>'Database'</code><code>, </code><code>'user'</code><code>),</code>

<code>                </code><code>passwd</code><code>=</code><code>conf.get(</code><code>'Database'</code><code>, </code><code>'passwd'</code><code>),</code>

<code>                </code><code>db</code><code>=</code><code>conf.get(</code><code>'Database'</code><code>, </code><code>'db'</code><code>),</code>

<code>                </code><code>charset</code><code>=</code><code>'utf8'</code><code>)</code>

<code>    </code><code>return</code> <code>con</code>

<code>  </code><code>except</code><code>:</code>

<code>    </code><code>print</code> <code>"Error:数据库连接错误"</code>

<code>    </code><code>return</code> <code>None</code>

<code>def</code> <code>test(param):</code>

<code>    </code><code>with con:</code>

<code>        </code><code>cur </code><code>=</code> <code>con.cursor()</code>

<code>        </code><code>sql </code><code>=</code> <code>'INSERT INTO a(ip,apply) VALUES(%s,%s)'</code>

<code>        </code><code># param = [['tomcat', '192.1.1.121'], ['redis', '192.1.1.122'], ['mongodb', '192.1.1.122']]</code>

<code>        </code><code># param = ((username1, salt1, pwd1), (username2, salt2, pwd2), (username3, salt3, pwd3))</code>

<code>        </code><code>cur.executemany(sql, param)</code>

<code>    </code><code>cursor.close()</code>

<code>def</code> <code>insert_file(</code><code>file</code><code>):</code>

<code>    </code><code>with </code><code>open</code><code>(</code><code>file</code><code>, </code><code>'r'</code><code>) as </code><code>file</code><code>:</code>

<code>            </code><code>tupleline </code><code>=</code>  <code>tuple</code><code>(line[</code><code>0</code><code>:</code><code>2</code><code>])</code>

<code>            </code><code>sql </code><code>=</code> <code>"INSERT INTO a(apply,ip) VALUES('%s','%s')"</code> <code>%</code> <code>tuple</code><code>(tupleline)</code>

<code>def</code> <code>insert_dict(</code><code>dict</code><code>):</code>

<code>    </code><code>for</code> <code>key,items </code><code>in</code> <code>dict</code><code>.iteritems():</code>

<code>        </code><code>line </code><code>=</code> <code>[]</code>

<code>        </code><code>line.append(key)</code>

<code>        </code><code>for</code> <code>item </code><code>in</code> <code>items:</code>

<code>            </code><code>line.append(item)</code>

<code>            </code><code>print</code> <code>line</code>

<code>            </code><code>sql </code><code>=</code> <code>"INSERT INTO a(ip,apply) VALUES('%s','%s')"</code> <code>%</code> <code>tuple</code><code>(line)</code>

<code>            </code><code>del</code> <code>line[</code><code>-</code><code>1</code><code>]</code>

<code>def</code> <code>select_example():</code>

<code>        </code><code># template_list = cursor.fetchall()</code>

<code>        </code><code># print template_list</code>

<code>def</code> <code>select_style():</code>

<code>def</code> <code>select(ip):</code>

<code>    </code><code>#id_list = [1, 2]</code>

<code>    </code><code>#sql = 'SELECT * FROM a WHERE id IN %s', (id_list,)</code>

<code>    </code><code>#cursor.execute('SELECT ip,apply FROM a WHERE id IN %s' % (tuple(id_list),))</code>

<code>    </code><code>sql </code><code>=</code> <code>"SELECT * FROM a WHERE ip = '%s'"</code> <code>%</code><code>(ip)</code>

<code>    </code><code>contents </code><code>=</code> <code>cursor.fetchall()</code>

<code>    </code><code>res </code><code>=</code> <code>contents</code>

<code>    </code><code>iplist </code><code>=</code> <code>[]</code>

<code>    </code><code>applist </code><code>=</code> <code>[]</code>

<code>    </code><code>for</code> <code>row </code><code>in</code> <code>contents:</code>

<code>        </code><code>iplist.append(row[</code><code>1</code><code>])</code>

<code>        </code><code>applist.append(row[</code><code>2</code><code>])</code>

<code>    </code><code>return</code> <code>applist</code>

<code>def</code> <code>read_file(</code><code>file</code><code>):</code>

<code>    </code><code>sql_lines </code><code>=</code> <code>[]</code>

<code>            </code><code>sql_lines.append(line)</code>

<code>    </code><code>print</code> <code>sql_lines</code>

<code>    </code><code>return</code> <code>sql_lines</code>

<code>    </code><code># print '\r\n'.join(str(sql_lines)) python3用的</code>

<code>''' file</code>

<code>192.1.1.121 tomcat</code>

<code>192.1.1.122 redis,mongodb,tomcat</code>

<code>'''</code>

<code>def</code> <code>read_file_2(</code><code>file</code><code>):</code>

<code>    </code><code>app </code><code>=</code> <code>{}</code>

<code>            </code><code>ip </code><code>=</code> <code>line[</code><code>1</code><code>]</code>

<code>            </code><code>apply</code> <code>=</code> <code>line[</code><code>-</code><code>1</code><code>]</code>

<code>            </code><code>if</code> <code>not</code> <code>ip </code><code>in</code> <code>app:</code>

<code>                </code><code>app[ip] </code><code>=</code> <code>[]</code>

<code>            </code><code>app[ip].append(</code><code>apply</code><code>)</code>

<code>    </code><code>return</code> <code>app</code>

<code>    </code><code>conf </code><code>=</code> <code>ConfigParser()</code>

<code>    </code><code>conf.read(</code><code>'mysql.conf'</code><code>)</code>

<code>    </code><code>con </code><code>=</code> <code>init_db()</code>

<code>    </code><code>file</code> <code>=</code> <code>'add'</code>

<code>    </code><code>apply</code> <code>=</code> <code>read_file_2(</code><code>file</code><code>)</code>

<code>    </code><code>for</code> <code>key,items </code><code>in</code> <code>apply</code><code>.iteritems():</code>

<code>        </code><code>dict</code> <code>=</code> <code>{}</code>

<code>        </code><code>dst_data </code><code>=</code> <code>select(key)</code>

<code>        </code><code>src_data </code><code>=</code> <code>list</code><code>(</code><code>set</code><code>(items))</code>

<code>        </code><code>ret_list </code><code>=</code> <code>[item </code><code>for</code> <code>item </code><code>in</code> <code>src_data </code><code>if</code> <code>item </code><code>not</code> <code>in</code> <code>dst_data]</code>

<code>        </code><code>dict</code><code>[key] </code><code>=</code> <code>ret_list</code>

<code>        </code><code>if</code> <code>ret_list:</code>

<code>            </code><code>insert_dict(</code><code>dict</code><code>)</code>

本文转自 liqius 51CTO博客,原文链接:http://blog.51cto.com/szgb17/1971959,如需转载请自行联系原作者