导航:首页 > 编程语言 > pythondatabase库

pythondatabase库

发布时间:2025-07-17 14:16:04

1. python:mysql插入和查询数据

在Python中操作MySQL数据库,实现数据的插入和查询是常见需求。首先,需要确保MySQL服务已经安装并且与Python环境兼容。

插入数据时,使用SQL命令结合MySQL连接进行操作。基本语法为:

INSERT INTO table_name (column1, column2, ...) VALUES (value1, value2, ...);

其中,table_name代表表名,column1, column2等为表中字段名,value1, value2等为对应字段的值。

在Python中,使用`mysql-connector-python`库实现数据的插入。示例代码如下:

python
import mysql.connector
cnx = mysql.connector.connect(user='username', password='password',
host='hostname',
database='database_name')
cursor = cnx.cursor()
query = ("INSERT INTO table_name "
"(column1, column2, ...) "
"VALUES (%s, %s, ...)")
data = (value1, value2, ...)
cursor.execute(query, data)
cnx.commit()
cursor.close()
cnx.close()

查询数据同样通过MySQL连接进行,基本语法如下:

SELECT * FROM table_name;

使用Python进行查询时,可以利用`cursor.execute()`执行SQL查询,根据查询结果进行数据处理。示例代码如下:

python
query = "SELECT * FROM table_name"
cursor.execute(query)
result = cursor.fetchall() # 获取所有数据
cursor.close()
cnx.close()

在处理数据时,若在终端中查询发现汉字显示为问号,可能是因为编码问题。确保MySQL和连接库支持UTF-8编码,执行如下命令解决编码问题:

bash
ALTER DATABASE database_name CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;

在Python中查询数据时,可以使用`fetchall()`, `fetchone()`, `fetchmany()`等方法,根据需要获取数据。如:

python
result = cursor.fetchall() # 获取所有数据
result = cursor.fetchone() # 获取第一条数据
result = cursor.fetchmany(10) # 获取10条数据

在查询数据时,可以使用`WHERE`和`LIMIT`进行条件查询和数据分页。例如:

python
query = "SELECT * FROM table_name WHERE column_name = 'value' LIMIT 5"
cursor.execute(query)
result = cursor.fetchall()

至此,MySQL数据表中的数据插入和查询操作完成。确保Python环境与MySQL服务兼容,使用正确的库进行连接和操作,以实现数据的高效管理。

2. Python连接mysql数据库及python使用mysqldb连接数据库教程

做python的时候需要用到数据库,于是自己重新整理了一下数据库的知识,并且熟悉了python中MysqlDB模块的功能和函数等接口,现在系统地来总结一下吧:

首先你要做的还是下载相应的模块并且安装啦,下载地址自己搜,网上有很多,安装的话也很好办,安装之后python的安装目录下的Lib文件夹下的site-packages文件夹下的MySQLdb文件夹,这之中存放的便是该模块的定义。准备工作做好之后我们需要在源码中import MySQLdb

数据库的连接:

模块引入之后我们就需要和数据库进行连接了,实例代码如下:

db = MySQLdb.connect("localhost","root","123456","myciti" )

这三个关键参数的含义一目了然:第一个为服务器的地址,第二个为用户名,第三个为dbms密码,第四个为要访问的数据库,其实该connect函数的参数不止这些,不过由于其有默认值而且大多数情况下不用修改,因而省略了。这里做如下列表:

host,连接的数据库服务器主机名,默认为本地主机(localhost)。

user,连接数据库的用户名,默认为当前用户。

passwd,连接密码,没有默认值。

db,连接的数据库名,没有默认值。

conv,将文字映射到Python类型的字典。默认为MySQLdb.converters.conversions

cursorclass,cursor()使用的种类,默认值为MySQLdb.cursors.Cursor。

compress,启用协议压缩功能。

named_pipe,在windows中,与一个命名管道相连接。

init_command,一旦连接建立,就为数据库服务器指定一条语句来运行。

read_default_file,使用指定的MySQL配置文件。

read_default_group,读取的默认组。

unix_socket,在unix中,连接使用的套接字,默认使用TCP。

port,指定数据库服务器的连接端口,默认是3306

大家可能会注意到源码中没有用到端口号,这是因为MySQLdb的connect函数的该参数的默认值便是3306,如果你在安装mysql的时候修改了数据库的端口号,那么你就需要在源码中加上该参数的修改值了。

一,安装mysql

如果是windows 用户,mysql 的安装非常简单,直接下载安装文件,双击安装文件一步一步进行操作即可。

linux 下的安装可能会更加简单,除了下载安装包进行安装外,一般的linux 仓库中都会有mysql ,我们只需要通过一个命令就可以下载安装:

Ubuntudeepin

>>sudo apt-get install mysql-server

>>Sudo apt-get install mysql-client

centOS/redhat

>>yum install mysql

二,安装MySQL-python

要想使python可以操作mysql 就需要MySQL-python驱动,它是python 操作mysql必不可少的模块。

下载地址:https://pypi.python.org/pypi/MySQL-python/

下载MySQL-python-1.2.5.zip 文件之后直接解压。进入MySQL-python-1.2.5目录:

>>python setup.py install

三,测试

测试非常简单,检查MySQLdb 模块是否可以正常导入。

fnngj@fnngj-H24X:~/pyse$ python

Python 2.7.4 (default, Sep 26 2013, 03:20:56)

[GCC 4.7.3] on linux2

Type "help", "right", "credits" or "license" for more information.

>>> import MySQLdb

没有报错提示MySQLdb模块找不到,说明安装OK ,下面开始使用python 操作数据库之前,我们有必要来回顾一下mysql的基本操作:

四,mysql 的基本操作

$ mysql -u root -p (有密码时)

$ mysql -u root (无密码时)

mysql> show databases; // 查看当前所有的数据库

+--------------------+

| Database |

+--------------------+

| information_schema |

| csvt |

| csvt04 |

| mysql |

| performance_schema |

| test |

+--------------------+

6 rows in set (0.18 sec)

mysql> use test; //作用与test数据库

Database changed

mysql> show tables; //查看test库下面的表

Empty set (0.00 sec)

//创建user表,name 和password 两个字段

mysql> CREATE TABLE user (name VARCHAR(20),password VARCHAR(20)); Query OK, 0 rows affected (0.27 sec)

//向user表内插入若干条数据

mysql> insert into user values('Tom',񟢙');Query OK, 1 row affected (0.05 sec)

mysql> insert into user values('Alen',񡈳');Query OK, 1 row affected (0.08 sec)

mysql> insert into user values('Jack',񡂏');Query OK, 1 row affected (0.04 sec)

//查看user表的数据

mysql> select * from user;+------+----------+

| name | password |

+------+----------+

| Tom | 1321 |

| Alen | 7875 |

| Jack | 7455 |

+------+----------+

3 rows in set (0.01 sec)

//删除name 等于Jack的数据

mysql> delete from user where name = 'Jack'Query OK, 1 rows affected (0.06 sec)

//修改name等于Alen 的password 为 1111

mysql> update user set password=񟟇' where name = 'Alen'Query OK, 1 row affected (0.05 sec)

Rows matched: 1 Changed: 1 Warnings: 0

//查看表内容

mysql> select * from user;+--------+----------+

| name | password |

+--------+----------+

| Tom | 1321 |

| Alen | 1111 |

+--------+----------+

3 rows in set (0.00 sec)

五,python 操作mysql数据库基础

#coding=utf-8import MySQLdb

conn= MySQLdb.connect(

host='localhost',

port = 3306,

user='root',

passwd=�',

db ='test',

)

cur = conn.cursor()#创建数据表#cur.execute("create table student(id int ,name varchar(20),class varchar(30),age varchar(10))")#插入一条数据#cur.execute("insert into student values(ƈ','Tom',Ɖ year 2 class',Ə')")#修改查询条件的数据#cur.execute("update student set class=Ɖ year 1 class' where name = 'Tom'")#删除查询条件的数据#cur.execute("delete from student where age=Ə'")cur.close()

conn.commit()

conn.close()

>>> conn = MySQLdb.connect(host='localhost',port = 3306,user='root', passwd=�',db ='test',)

Connect() 方法用于创建数据库的连接,里面可以指定参数:用户名,密码,主机等信息。

这只是连接到了数据库,要想操作数据库需要创建游标。

>>> cur = conn.cursor()

通过获取到的数据库连接conn下的cursor()方法来创建游标。

>>> cur.execute("create table student(id int ,name varchar(20),class varchar(30),age varchar(10))")

通过游标cur 操作execute()方法可以写入纯sql语句。通过execute()方法中写如sql语句来对数据进行操作。

>>>cur.close()

cur.close() 关闭游标

>>>conn.commit()

conn.commit()方法在提交事物,在向数据库插入一条数据时必须要有这个方法,否则数据不会被真正的插入。

>>>conn.close()

Conn.close()关闭数据库连接

六,插入数据

通过上面execute()方法中写入纯的sql语句来插入数据并不方便。如:

>>>cur.execute("insert into student values(ƈ','Tom',Ɖ year 2 class',Ə')")

我要想插入新的数据,必须要对这条语句中的值做修改。我们可以做如下修改:

#coding=utf-8import MySQLdb

conn= MySQLdb.connect(

host='localhost',

port = 3306,

user='root',

passwd=�',

db ='test',

)

cur = conn.cursor()#插入一条数据sqli="insert into student values(%s,%s,%s,%s)"cur.execute(sqli,(Ɖ','Huhu',ƈ year 1 class',ƍ'))

cur.close()

conn.commit()

conn.close()

假如要一次向数据表中插入多条值呢?

#coding=utf-8import MySQLdb

conn= MySQLdb.connect(

host='localhost',

port = 3306,

user='root',

passwd=�',

db ='test',

)

cur = conn.cursor()#一次插入多条记录sqli="insert into student values(%s,%s,%s,%s)"cur.executemany(sqli,[

(Ɖ','Tom',Ƈ year 1 class',ƌ'),

(Ɖ','Jack',ƈ year 1 class',ƍ'),

(Ɖ','Yaheng',ƈ year 2 class',ƍ'),

])

cur.close()

conn.commit()

conn.close()

executemany()方法可以一次插入多条值,执行单挑sql语句,但是重复执行参数列表里的参数,返回值为受影响的行数。

七,查询数据

也许你已经尝试了在python中通过

>>>cur.execute("select * from student")

来查询数据表中的数据,但它并没有把表中的数据打印出来,有些失望。

来看看这条语句获得的是什么

>>>aa=cur.execute("select * from student")

>>>print aa

5

它获得的只是我们的表中有多少条数据。那怎样才能获得表中的数据呢?进入python shell

>>> import MySQLdb>>> conn = MySQLdb.connect(host='localhost',port = 3306,user='root', passwd=�',db ='test',)>>> cur = conn.cursor()>>> cur.execute("select * from student")5L

>>> cur.fetchone()

(1L, 'Alen', Ƈ year 2 class', ƌ')>>> cur.fetchone()

(3L, 'Huhu', ƈ year 1 class', ƍ')>>> cur.fetchone()

(3L, 'Tom', Ƈ year 1 class', ƌ')

...>>>cur.scroll(0,'absolute')

fetchone()方法可以帮助我们获得表中的数据,可是每次执行cur.fetchone() 获得的数据都不一样,换句话说我没执行一次,游标会从表中的第一条数据移动到下一条数据的位置,所以,我再次执行的时候得到的是第二条数据。

scroll(0,'absolute') 方法可以将游标定位到表中的第一条数据。

还是没解决我们想要的结果,如何获得表中的多条数据并打印出来呢?

#coding=utf-8import MySQLdb

conn= MySQLdb.connect(

host='localhost',

port = 3306,

user='root',

passwd=�',

db ='test',

)

cur = conn.cursor()#获得表中有多少条数据aa=cur.execute("select * from student")print aa#打印表中的多少数据info = cur.fetchmany(aa)for ii in info: print ii

cur.close()

conn.commit()

conn.close()

通过之前的print aa 我们知道当前的表中有5条数据,fetchmany()方法可以获得多条数据,但需要指定数据的条数,通过一个for循环就可以把多条数据打印出啦!执行结果如下:

5(1L, 'Alen', Ƈ year 2 class', ƌ')

(3L, 'Huhu', ƈ year 1 class', ƍ')

(3L, 'Tom', Ƈ year 1 class', ƌ')

(3L, 'Jack', ƈ year 1 class', ƍ')

(3L, 'Yaheng', ƈ year 2 class', ƍ')

[Finished in 0.1s]

3. python如何访问数据库

1.背景:

python提供了很多数据库接口, 常用的数据库有 MS SQL Server /mysql /oracle 等。

打开链接 https://wiki.python.org/moin/DatabaseInterfaces

是python 关于数据库接口的一个总结 , 可以看到python支持的访问的数据库系统。

2.模块:

python 主要是通过模块和数据库连接的。

2.1 安装模块:

如果使用anconda,本身就会集合很多模块,不需要手动安装。如果用pycharm就要手动安装模块。

安装模块流程:

下载模块扩展包放到路径下——>cmd找到相应路径——> pip install +扩展包名字

下面列举一些常用连接数据库的模块:pymssql / sqlite3/ PyMySQL/pyodbc/odbc/adodbapi

不同模块连接的数据库不同, 支持的版本系统有的也不一样。但是大体用法都是相近的, 因为有DB-API

相关推荐:《Python教程》

3.Python DB-API

3.1背景:

在没有DB-API 之前, 不同数据库有不同的数据库接口程序, 这就导致python 访问 database 的接口程序非常混乱。如果我们学习了python 访问 mysql 的接口程序, 然后要切换到另一个数据库上, 我们还要在学习另外一个数据库的接口程序。python DB-API就是为了解决接口程序混乱而生成的。有了DB-API, 在不同数据库上移植代码就变得简单的多了。

3.2Python DB-API:

Python 定义了一套操作数据库的 DB-API 接口,它是一个规范,定义了一系列必须的对象和数据库存取方式,以便为不同的底层数据库系统提供一致的访问接口

这个链接就是python 官方给定的 DB-API 的说明 https://www.python.org/dev/peps/pep-0249/

3.3 Python DB--API的内容:

连接对象:

?Connect()创建连接:host/server /user/password/db connect方法生成一个connect对象, 我们通过这个对象来访问数据库。符合标准的模块都会实现connect方法。

?close():关闭连接

?commit():提交当前事务。做出某些更改后确保已经进行了提交,这样才可以将这些修改真正地保存到database中

?rollback() 回滚上一次调用 commit()以来对数据库所做的更改

?cursor():创建游标。系统为用户开通的一个数据缓冲区,用于存放SQL语句执行结果。cursor游标是有状态的,它可以记录当前已经取到结果的第几个记录了,因此,一般你只可以遍历结果集一次。在上面的情况下,如果执行fetchone()会返回为空。这一点在测试时需要注意

游标对象:

?Execute()执行一个数据库查询或命令。 execute 执行sql 语句之后运行的结果不会直接output 出来 , 而是放到了一个缓存区, 要用 fetch语句+print 可以查询sql运行的结果

?fetchone ()得到结果集的下一行

?fetchmany(size)得到结果集的下几行

?fetchall()返回结果集中剩下的所有行

?rowcount 返回影响的行数

?Close()关闭游标对象

3.4Python DB--API的工作原理及流程:

如图所示如果把python 和数据库比作两个不同的地点, connection 就是路, 能连接python和database。cursor就像在路上行驶的小货车, 可以用于执行sql 语句, 以及存储sql 运行的结果。

流程:

4.MS SQL Server 示例:

4.1 导入模块、创建连接:

4.2 创建游标: 游标创建之后就可以对数据库进行查询更改了!

4.3对数据进行操作(创建表、插入行、更新数据、增加列、删除行、列、表):

4.4 查询 获取行:

5.其他:

使用游标的时候要注意, 每次连接只能有一个游标查询处于活跃状态。 code演示:

execute()循环和 executemany() 插入100000 条数据测速:

阅读全文

与pythondatabase库相关的资料

热点内容
豆瓣程序员采访报道 浏览:651
徽赢app怎么更换手机号码 浏览:896
byd宋经典app怎么下 浏览:708
域名解析成ip地址通过什么服务器 浏览:785
服务器怎么更换端口 浏览:566
程序员不做死肥宅 浏览:417
照片能放在文件夹吗 浏览:121
编译益盟选股方法 浏览:741
手机app怎么修改手机号 浏览:306
什么安卓浏览器可以批量下载 浏览:269
移动wifi没有服务器地址 浏览:119
程序员用的都是mac吗 浏览:153
手机上的java编程软件有哪些 浏览:837
单片机步进电机控制程序正转 浏览:97
台史pdf 浏览:299
ps安装到桌面怎么解压 浏览:346
编译lotus源码失败 浏览:196
javacodesource 浏览:480
php手游框架 浏览:455
命令方块怎么获得附魔高级武器 浏览:590