前提条件是本机已安装了mysql,mysql安装流程请查看:mysq安装
mysql-connector 驱动安装
使用pip3命令来安装mysql-connector(由于本机存在多版本python,故要指定pip版本)
在windos命令窗口执行如下命令:
python3 -m pip3 install mysql-connector
#python3 -m pip install mysql-connector
提示:pip3orpip模块不存在
找不到pip3,没找到pip3模块
直接到python3.5安装路径下找,发现是有pip、pip3、pip3.5,但是访问时报错。
D:\Software\Python35\Scripts
在window命令窗口执行如下命令,重新生成pip3
python3 -m ensurepip
重新查看D:\Software\Python35\Scripts,pip3及pip3.5均已更新
重新在windows命令窗口执行:
#python3 -m pip3 install mysql-connector
python3 -m pip install mysql-connector
用pip3执行依旧不成功,只能换成pip执行。
在Pycharm中的TestDb项目中尝试引入模块
import mysql.connector
运行代码后居然还是报错,提示没有mysql.connector这个模块。
后来重新设置了TestDb项目的Project Interpreter为python3.5
运行代码结果:Process finished with exit code 0 证明代码运行正常。
1、连接数据库
#-*- coding:utf-8 -*-
import mysql.connector
mydb = mysql.connector.connect(
host='127.0.0.1', # 数据库主机地址
user='****', # 数据库用户名
passwd='*****' # 数据库密码
)
print(mydb)
执行结果,已正常连接。
D:\Software\Python35\python3.exe D:/Software/python/PycharmProjects/TestDb/connectDB.py
<mysql.connector.connection.MySQLConnection object at 0x00000000011767F0>
Process finished with exit code 0
创建数据库
在原来代码的基础上追加如下代码:
mycursor = mydb.cursor()
mycursor.execute('CREATE DATABASE enterprise_db_test')
执行结果:成功
Process finished with exit code 0
查看是否创建数据库成功,可以show数据库,展示数据库列表
#-*- coding:utf-8 -*-
import mysql.connector
mydb = mysql.connector.connect(
host='127.0.0.1', # 数据库主机地址
user='*****', # 数据库用户名
passwd='*****' # 数据库密码
)
mycursor = mydb.cursor()
#mycursor.execute('CREATE DATABASE enterprise_db_test')
mycursor.execute('show databases')
for x in mycursor:
print(x)
输出结果:
D:\Software\Python35\python3.exe D:/Software/python/PycharmProjects/TestDb/connectDB.py
('information_schema',)
('enterprise_db_test',)
('guest',)
('mysql',)
('performance_schema',)
('run00b',)
('school',)
('sys',)
Process finished with exit code 0
直接连接已创建的数据库
#-*- coding:utf-8 -*-
import mysql.connector
mydb = mysql.connector.connect(
host='127.0.0.1', # 数据库主机地址
user='****', # 数据库用户名
passwd='*****', # 数据库密码
database='enterprise_db_test' # 连接已有数据库,如果不存在则报错
)
2、执行sql文件
#-*- coding:utf-8 -*-
__author__ = 'grit'
__time__ = '2019-11-28'
import mysql.connector
import os
def get_sql_files():
sql_files = []
# listdir()返回指定路径下的文件和文件夹列表 os.path.dirname(path):去掉文件名,返回目录
# os.path.abspath(__file__):获取脚本完整路径
files = os.listdir(os.path.dirname(os.path.abspath(__file__)))
for file in files:
if os.path.splitext(file)[1] == '.sql':
sql_files.append(file)
return sql_files
def connectMydb():
print('开始连接数据库')
#打开数据库
mydb = mysql.connector.connect(
host='****', # 数据库主机地址
user='****', # 数据库用户名
passwd='****', # 数据库密码
database='enterprise_db_test', # 连接已有数据库,如果不存在则报错
autocommit=True
)
# 使用cursor()方法创建一个游标对象 cursor
cursor = mydb.cursor()
for file in get_sql_files():
executeScriptsFromFile(file, cursor)
mydb.close()
def executeScriptsFromFile(filename,cursor):
fd = open(filename, 'r', encoding='utf-8')
sqlFile = fd.read()
fd.close()
sqlCommands = sqlFile.split(';')
for command in sqlCommands:
try:
cursor.execute(command)
# cursor.connection.commit() # 执行commit操作,插入语句才能生效
except Exception as msg:
print(msg)
print('sql执行完成')
if __name__ == "__main__":
connectMydb()