MySQLdb默认查询结果都是返回tuple,输出时候不是很方便,必须按照0,1这样读取,无意中在网上找到简单的修改方法,就是传递一个cursors.DictCursor就行。
默认程序:
import MySQLdb
db = MySQLdb.connect(host='localhost', user='root', passwd='123456', db='test')
cur = db.cursor()
cur.execute('select * from user')
rs = cur.fetchall()
print rs
# 返回类似如下
# ((1000L, 0L), (2000L, 0L), (3000L, 0L))
import MySQLdb
import MySQLdb.cursors
db = MySQLdb.connect(host='localhost', user='root', passwd='123456', db='test',
cursorclass=MySQLdb.cursors.DictCursor)
cur = db.cursor()
cur.execute('select * from user')
rs = cur.fetchall()
print rs
# 返回类似如下
# ({'age': 0L, 'num': 1000L}, {'age': 0L, 'num': 2000L}, {'age': 0L, 'num': 3000L})
或者也可以用下面替换connect和cursor部分
db = MySQLdb.connect(host='localhost', user='root', passwd='123456', db='test')
cur = db.cursor(cursorclass=MySQLdb.cursors.DictCursor)
我的实践:
输出为元组类型:
import pymysql
db = pymysql.connect("localhost", "root", "123456", "filestore")
cursor = db.cursor()
sql='select * from tablelist where id>%s' %4
#查询方法一
cursor.execute(sql)
result=cursor.fetchall()
print('result',result)
sql2='select * from tablelist where id>%s'
values=('4') # 此处为元组类型
#查询方法二
cursor.execute(sql2,values)
result2=cursor.fetchall()
print('result2',result2)
id_list=[]
tablename_list=[]
tabletime_lsit=[]
cursor.execute('select * from tablelist where id>%s',[4,])
result3=cursor.fetchall()
print('type(result3)',type(result3))
#对((6, 'engineeringdata20180901', '1535731200'),)类型数据的提取
for i in range(len(result3)):
id_list.append(result3[i][0])
tablename_list.append(result3[i][1])
tabletime_lsit.append(result3[i][2])
print(id_list)
print(tabletime_lsit)
print(tablename_list)
cursor.close()
db.close()
#输出结果:
result ((6, 'engineeringdata20180901', '1535731200'), (618, 'engineeringdata20180904', '1535990400'))
result2 ((6, 'engineeringdata20180901', '1535731200'), (618, 'engineeringdata20180904', '1535990400'))
type(result3) <class 'tuple'>
[6, 618]
['1535731200', '1535990400']
['engineeringdata20180901', 'engineeringdata20180904']
输出为list类型:
list_id=[]
list_tablename=[]
list_tabletime=[]
list=get_list('select * from tablelist where id>%s',[4])
print('list:',list)
# 对[{'id': 6, 'tablename': 'engineeringdata20180901', 'tabletime': '1535731200'},]类型数据的提取
for i in range(len(list)):
print(list[i])
list_id.append(list[i]['id'])
list_tablename.append(list[i]['tablename'])
list_tabletime.append(list[i]['tabletime'])
print('list_id:',list_id)
print('list_tabletime:',list_tabletime)
print('list_tablename:',list_tablename)
# 输出结果为:
list: [{'id': 6, 'tablename': 'engineeringdata20180901', 'tabletime': '1535731200'}, {'id': 618, 'tablename': 'engineeringdata20180904', 'tabletime': '1535990400'}]
{'id': 6, 'tablename': 'engineeringdata20180901', 'tabletime': '1535731200'}
{'id': 618, 'tablename': 'engineeringdata20180904', 'tabletime': '1535990400'}
list_id: [6, 618]
list_tabletime: ['1535731200', '1535990400']
list_tablename: ['engineeringdata20180901', 'engineeringdata20180904']
将fork的编号与ip信息存储在了MySQL中,数据库为forklift,数据表名为fork_info,存储格式为id+num+ip,那么如何用python去查询这些信息呢?的第一行数据,并将检索到的信息打印出来。如果没有找到有效信息,将相应打印一条提示信息。如果想返回所有不重复的结果,而不仅仅是第一个不重复的结果,可以使用。如果没有找到有效信息,它将打印相应的提示信息。这样,它将会返回数据库中所有满足。替换为实际的数据库连接信息。条件的行,并打印出每一行的。为实际的数据库连接信息。
开始cursor.execute(''.join(str(sql).strip()))
#count= cursor.rowcount;
num=cursor.rownumber修改后:cursor.execute(''.join(str(sql).strip()))
cursor.fetchall();
#count= cursor.rowcount;
num=cursor.rownumber
首先,熟悉 Oracle-Python 连接性的基本概念2007 年 9 月发布在 Python 做事方式的核心原则中,有一个规定是要求具有到 API 的高级接口。数据库 API(在此例中为 Oracle API)就是一个例子。使用 Computronix 的 cx_Oracle Python 模块,您可以在维持与 Python 数据库 API 规范 v2.0 的兼容性的同时,控制 Oracle ...
import mysql.connector
# 注意把password设为你的root口令:
conn = mysql.connector.connect(host='localhost',user='root', password...
def read_sql(conn,sentence):
cursor = conn.cursor()
cursor.execute(sentence) #sentence为sql指令
result = cursor.fetchall()
conn.commit()
cursor.close()
return result #返回为远元组
当只查询一列数据时,希望得到列表,可以对上面代码的result做如下处理:
result
list1 = [{"id": 34, "timestamp": 16594},
{"id": 532, "timestamp": 19546},
{"id": 342, "timestamp": 95412},
{"id": 653, "timestamp": 84894}]
# 其中{k: v for k, v in x.items() if (k == "timestamp" and v >= 84894)}就是字典筛选
1、boolean execute(String sql); 可执行任何SQL语句,返回一个布尔值,表示是否返回ResultSet 。
2、ResultSet executeQuery(String sql); 执行SQL查询,并返回ResultSet 对象。
3、int executeUpdate(String sql); 可执行增,删...
python3 typing 返回结果中出现None 或者是参数有两个或两个以上的数据类型如下所示:deffoo(x:int)->str:ifx==1:return'good'else:returnNone以上方法,会返回两个值,一种是字符串类型,一种是None。怎么用typing表示呢?解决方法:从python3.5版开始,Python通过typing模块支持类型注释。可以使用Un...
def con_sql(db,sql):
# 创建连接
db = pymysql.connect(host='127.0.0.1', port=3308, user='name', passwd='password', db=db, charset='utf8')
# 创建游标
cursor = db.curso...
def export(table_name):
conn =pymysql.connect(host = '118.24.3.40',
user = 'jxz',password='123456',
db='jxz',port=3306,charset = 'utf8')
cur = co
Python如何从cursor读出的一列数据中得到自己想要的格式
((15.2,), (15.3,), (15.4,), (15.5,), (15.6,), (15.5,), (15.4,), (15.3,), (15.2,), (15.1,), (13.6,), (18.7,), (16.5),(15.3,), (12.8,))
但是自己想要以纯数据或列表的形式
row1 = []