gpt4 book ai didi

python - python连接mysql数据库

转载 作者:行者123 更新时间:2023-11-30 22:55:34 26 4
gpt4 key购买 nike

我创建了一个数据库,如下所示:

+------------+-------+--------------+-------------------------------+
| Reg_exp | Token | Integer_code | Attribute_value |
+------------+-------+--------------+-------------------------------+
| WHITESPACE | - | 0 | - |
| begin | begin | 1 | - |
| end | end | 2 | - |
| if | if | 3 | - |

我可以使用以下命令访问数据库的元组:(我没有包括连接部分,只包括查询)

if input == str1:
print "MATCH FOUND!!!"
sql = "SELECT * FROM EXPRESSION WHERE Integer_code = 1"
try:
cursor.execute(sql)
results = cursor.fetchall()
for row in results:
print (row[0], row[1], row[2], row[3])
except:
print "failed!!!"

我得到的结果是:

MATCH FOUND!!!
('begin', 'begin', 1L, '-')

我想以表格的形式显示值以及列名。我该怎么做?

最佳答案

可能我的回答对问这个问题后一直没有在线的 OP 没有用,但可能对 future 遇到同样问题的成员有用。

OP 正在寻找 MySQL 格式的 Python 输出:

mysql> SHOW COLUMNS FROM begueradj FROM begueradj;
+-----------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------------+-------------+------+-----+---------+-------+
| Reg_exp | varchar(20) | NO | | NULL | |
| Token | varchar(20) | NO | | NULL | |
| Integer_code | int(2) | NO | | NULL | |
| Attribute_value | varchar(2) | NO | | NULL | |
+-----------------+-------------+------+-----+---------+-------+

(顺便说一句,我的数据库和表同名)

我创建了与 OP 相同的表,并用相同的数据填充它。

将世界视为一组对象很好,所以我的解决方案将在一个类中完成,在该类中我们需要将连接参数保存到类构造函数 def __init__( self ):

self.config = { 'user':'begueradj',
'passwd':'begueradj',
'host':'127.0.0.1',
'db':'begueradj',
}

当然,这些参数需要自己改成自己的。

当然,尝试自己破解不一定是最好的主意。对于我的解决方案,我选择使用 texttable您可以通过以下方式安装:

  • 首先下载压缩模块。
  • 解压缩文件并将目录更改为它。
  • 最后,键入此命令:sudo python setup.py install

执行 MySQL 查询后 (self.sqlquery = """SELECT * FROM begueradj"""),您将需要 MySQLCursor.description Property 以元组格式获取列的名称:

# Get columns' names
self.columns = [i[0] for i in self.cursor.description]

请注意,将元组转换为列表很有用,因为 texttable 模块适用于列表。

Python程序:

我在下面评论了几乎我的程序解决方案的每一行:

'''
Created on Mar 3, 2016

@author: begueradj
'''
import MySQLdb
import texttable

class Begueradj:
""" Display MySQL table's content along with
table's columns name as in pure MySQL format.
"""
def __init__(self):
""" Initialize MySQL server login parameters.
Try to connect to communicate with MySQL database.
"""
self.config = {'user':'begueradj',
'passwd':'begueradj',
'host':'127.0.0.1',
'db':'begueradj',
}
# Try to log to MySQL server
try:
self.dbconnexion = MySQLdb.connect(**self.config)
except MySQLdb.Error:
print "Database connexion failure!"

# Read the content of the MySQL table
self.sqlquery = """SELECT * FROM beg"""

def begueradj(self):
""" Display MySQL table data.
"""
self.cursor = self.dbconnexion.cursor()
self.cursor.execute(self.sqlquery)

# Get columns' names
self.columns = [i[0] for i in self.cursor.description]

self.tab = texttable.Texttable()
self.tablerow = [[]]

# Fetch all the rows from the query
self.data = self.cursor.fetchall()

# Must transform each tuple row to a list
for r in self.data:
self.tablerow.append(list(r))

# Get the number of columns of the table
self.tab.add_rows(self.tablerow)
# Align displayed data within cells to left
self.tab.set_cols_align(['l','l','l','l'])
# Once again, convert each tuple row to a list
self.tab.header(list(self.columns))
# Display the table (finally)
print self.tab.draw()

# Don't forget to close the connexion.
self.dbconnexion.close()

# Main program
if __name__=="__main__":
b=Begueradj()
b.begueradj()

演示:

enter image description here

关于python - python连接mysql数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26534629/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com