怎么用python连接mysql数据库,第1张

在 Python 语言环境下我们这样连接数据库

In [1]: from mysql import connector

In [2]: cnx = connectorconnect(host="17216192100",port=3306,user="appuser",password="xxxxxx")

但是连接数据库的背后发生了什么呢?

答案

当我们通过驱动程序(mysql-connector-python,pymysql)连接 MySQL 服务端的时候,就是把连接参数传递给驱动程序,驱动程序再根据参数会发起到 MySQL 服务端的 TCP 连接。当 TCP 连接建立之后驱动程序与服务端之间会按特定的格式和次序交换数据包,数据包的格式和发送次序由 MySQL 协议 规定。MySQL 协议:https://devmysqlcom/doc/internals/en/client-server-protocolhtml整个连接的过程中 MySQL 服务端与驱动程序之间,按如下的次序发送了这些包。

MySQL 服务端向客户端发送一个握手包,包里记录了 MySQL-Server 的版本,默认的授权插件,密码盐值(auth-data)。

2 MySQL 客户端发出 ssl 连接请求包(如果有必要的话)。

3 MySQL 客户端发出握手包的响应包,这个包时记录了用户名,密码加密后的串,客户端属性,等等其它信息。

4 MySQL 服务端发出响应包,这个包里记录了登录是否成功,如果没有成功也会给出错误信息。

 有时候我们希望在一个sqlserver下访问另一个sqlserver数据库上的数据 或者访问其他oracle数据库上的数据 要想完成这些操作 我们首要的是创建数据库链接

 数据库链接能够让本地的一个sqlserver登录用户映射到远程的一个数据库服务器上 并且像操作本地数据库一样 那么怎么创建数据库链接呢我现在有两种方法可以实现

 第一种 在 sqlserver 企业管理器中 建立 这个比较简单的 首先在 安全性 〉数据库链接 上点右键  在出现的菜单中点 新建数据库链接  然后会弹出一个界面 需要我们填写的有 链接服务器(这是一个名字 自己根据情况自行定义 以后就要通过他进行远程访问了) 提供程序名称(这个就是选择数据驱动 根据数据库类型来选择 不能乱选 否则链接不上的) 数据源(对于sqlserver就是远程数据库服务器的主机名或者IP 对于 oracle 就是在 oracle net config 中配置的别名) 安全上下文用户和口令(也就是远程服务器的用户和口令)

 第二种 利用系统存储过程

 创建一个sqlserver对sqlserver的数据库链接

 exec sp_addlinkedserver link_northsnow SQLOLEDB 远程服务器主机名或域名或ip地址

 exec sp_addlinkedsrvlogin link_northsnow false null 用户名 用户口令

 创建一个sqlserver对Oracle的数据库链接

 exec sp_addlinkedserver link_ora Oracle MSDAORA oracle数据库服务器别名

 exec sp_addlinkedsrvlogin link_ora false sa 用户名 用户口令

 有了数据库链接我们就可以使用了 对于sqlserver和oracle中的使用方法是有区别的

 对于sqlserver

 create view v_lhsy_user as select from link_northsnow lhsy dbo sys_user

 select from v_lhsy_user

 其中lhsy为远程的数据库名

 sys_user为表名

 对于 oracle

 create view vvv as select from link_ora NORTHSNOW SYS_USER

 select from vvv;

 其中northsnow为远程oracle数据库服务器的一个用户名 SYS_USER为该用户在该服务器上的一个表 要非常注意的是 数据库链接(link_ora)后面有两个点( ) 再往后面必须全部大写 查询的对象一般为表格或者视图 不能查询同义词

 要想删除数据库链接 也有两种方法

 一种是在企业管理器中操作 这个简单

 另一种是用系统存储过程

lishixinzhi/Article/program/SQLServer/201311/22533

人家说的是对滴。

在计算机中有一个hosts文件,里面的内容为:

localhost 127001 localhost就是本机。127001是一个回环地址,作用先不说,也是指本地机器的地址。

(local)是数据库中的地址描述方法,同样是指的localhost 也可以写你计算机名

所以服务器名称: localhost=127001=(local)==计算机名

在webconfig文件中连接数据库的字符串,可以写为:

ip (local) 后面是个点哈~ 计算机名忘了行不行了,可以试下。

1、在安装有些软件的时候,我们会用到主机名,但是一时不知道去哪里找,下面介绍两种简单的方法。

2、工具/原料:电脑。

3、方法/步骤:

(1)第一种方法是在命令提示符下,可用快捷键windows+R,输入cmd,回车,输入ipconfig /all,然后就可以看到自己的主机名了,还有IP地址之类的。

(2)还有一种办法是我的电脑,右键属性,可以看到自己的主机名。

1、windows下postgresql的安装

我下载的为xxx92exe一路默认安装即可。安装位置为C:\Program Files\PostgreSQL。

安装完毕后,在dos下执行命令

>net user

列出当前系统用户名称。我的用户名为Administrator。

>psql –U Administrator –d postgres

该命令表示通过数据库用户Administrator连接数据库postgres。

l 若显示psql不是内部或外部命令,则说明postgresql的bin文件路径没添加到windows系统中,右击“我的电脑”->”属性”->”高级”->”环境变量”->”Administrator”的用户变量,选中“PATH”,点击编辑,将”C:\Program Files\PostgreSQL\92\bin”添加进去,注意与前面的路径用”;”隔开。电脑重启生效。

l 若显示角色Administrator不存在,则必须在postgresql数据库中添加该用户才能使其可以登录。

在postgresql中

查询系统用户

postgres=#select from pg_user;

查询系统中的数据库

postgres=#select from pg_database;

说明一下:“template1”是Postgresql在初始化时自动创建的测试数据库。

创建postgresql数据库Administrator用户

方式1

在PostgreSQL中创建用户postgreSQL用户Administrator

用SQL Shell(psql)通过用户postgres登录PostgreSQL,创建用户Administrator,

postgres=#create user “Administrator”;

方式2

通过windows下dos创建postgresql用户Administrator

将PostgreSQL文件夹bin路径添加到系统环境中后重启生效

通过windows下dos创建postgresql用户是区分大小写的。

配置客户机访问

为了配置远程主机和用户可以连接到PostgreSQL服务,你需要pg_hbaconf文件。文件包含大量注释记录用于远程访问的选项。在我们的安装示例中,我们允许局域网中任何主机的任何用户访问服务器上的数据库。为了达到这个目的,我们添加以下的一行记录到文件尾:

host all all 19216800/16 trust

这意味着所有IP地址由192168开始的计算机可以访问所有的数据库。最简单的使配置生效的方法就是重启服务器。

在dos下操作,通过createuser –Uolduser –P newuser来创建。

比如我们想创建postgresql数据库用户Administrator。

>createuser –U postgre –P Administrator

这样创建的数据库用户Administrator没有创建数据库的权利,可以通过pgAdmin III登录进行查看。

若使其可以创建数据库可以参照下面内容进行设置:

>createuser –U postgre –s Administrator

这样具有创建数据库能力。

createuser的用法可以通过在dos中输入createuser –help查看。

MicrosoftWindows XP [版本 512600]

(C)版权所有 1985-2001 Microsoft Corp

C:\Documentsand Settings\Administrator>createuser --help

createuser创建一个新的 PostgreSQL 用户

使用方法:

createuser [选项] [用户名]

选项:

-c, --connection-limit=N 角色的连接限制(缺省: 没有限制)

-d, --createdb 此角色可以创建新数据库

-D, --no-createdb 此角色不可以创建新数据库(默认)

-e, --echo 显示发送到服务端的命令

-E, --encrypted 口令加密存储

-i, --inherit 角色能够继承它所属角色的权限

(这是缺省情况)

-I, --no-inherit 角色不继承权限

-l, --login 角色能够登录(这是缺省情况)

-L, --no-login 角色不能登录

-N, --unencrypted 口令不加密存储

-P, --pwprompt 给新角色指定口令

-r, --createrole 这个角色可以创建新的角色

-R, --no-createrole 这个角色没有创建其它角色的权限(默认)

-s, --superuser 角色将是超级用户

-S, --no-superuser 角色不能是超级用户(默认)

-V, --version 输出版本信息, 然后退出

--interactive 提示缺少角色名及其属性

而不是使用默认值

--replication 角色能启动复制

--no-replication 角色不能启动复制

-, --help 显示此帮助, 然后退出

联接选项:

-h, --host=HOSTNAM 数据库服务器所在机器的主机名或套接字目录

-p, --port=PORT 数据库服务器端口号

-U, --username=USERNAME 联接用户 (不是要创建的用户名)

-w, -no-password 永远不提示输入口令

-W, --password 强制提示输入口令

臭虫报告至<pgsql-bugs@postgresqlorg>

C:\Documentsand Settings\Administrator>

方式3

在C:\Program Files\PostgreSQL\92\bin文件夹下有可执行文件createuserexe,我双击后,该文件执行一闪就关闭,只好在dos中输入cmd打开窗口,将该文件拖入窗口中,在输入“ –U postgres –P Adiminisrator”然后回车,如下图所示,即可创建数据库用户Administrator。但此时该用户不具有创建database的能力,可以通过pgAdmin III查看。

psql的用法可以通过在dos下输入psql –help查看,如下图所示。

MicrosoftWindows XP [版本 512600]

(C) 版权所有1985-2001 Microsoft Corp

C:\Documentsand Settings\Administrator>psql --help

psql是PostgreSQL 的交互式客户端工具。

使用方法:

psql [选项] [数据库名称 [用户名称]]

通用选项:

-c,--command=命令 执行单一命令(SQL或内部指令)然后结束

-d, --dbname=数据库名称 指定要连接的数据库 (缺省:"Administrator")

-f, --file=文件名 从文件中执行命令然后退出

-l, --list 列出所有可用的数据库,然后退出

-v, --set=, --variable=名称=值

为psql变量(名称)设定值

-V, --version 输出版本信息, 然后退出

-X, --no-psqlrc 不读取启动文档(~/psqlrc)

-1 ("one"), --single-transaction

作为一个单一事务来执行命令文件

-, --help 显示此帮助, 然后退出

输入和输出选项:

-a, --echo-all 显示所有来自于脚本的输入

-e, --echo-queries 显示发送给服务器的命令

-E, --echo-hidden 显示内部命令产生的查询

-L, --log-file=文件名 将会话日志写入文件

-n, --no-readline 禁用增强命令行编辑功能(readline)

-o, --output=FILENAME 将查询结果写入文件(或 |管道)

-q, --quiet 以沉默模式运行(不显示消息,只有查询结果)

-s, --single-step 单步模式 (确认每个查询)

-S, --single-line 单行模式 (一行就是一条 SQL 命令)

输出格式选项 :

-A, --no-align 使用非对齐表格输出模式

-F, --field-separator=字符串

设字段分隔符(缺省:"|")

-H, --html HTML 表格输出模式

-P, --pset=变量[=参数] 设置将变量打印到参数的选项(查阅 \pset 命令)

-R, --record-separator=字符串

设定记录分隔符(缺省:换行符号)

-t, --tuples-only 只打印记录i

-T, --table-attr=文本 设定 HTML 表格标记属性(例如,宽度,边界)

-x, --expanded 打开扩展表格输出

-z, --field-separator-zero

设置字段分隔符为字节0

-0, --record-separator-zero

设置记录分隔符为字节0

联接选项:

-h, --host=主机名 数据库服务器主机或socket目录(缺省:"本地接口")

-p, --port=端口 数据库服务器的端口(缺省:"5432")

-U, --username=用户名 指定数据库用户名(缺省:"Administrator")

-w, --no-password 永远不提示输入口令

-W, --password 强制口令提示 (自动)

更多信息,请在psql中输入"\"(用于内部指令)或者"\help"(用于SQL命令),

或者参考PostgreSQL文档中的psql章节

臭虫报告至<pgsql-bugs@postgresqlorg>

C:\Documentsand Settings\Administrator>

主机名

因特网上的主机或 Web 站点由主机名识别,例如,wwwexamplecom。主机名有时称为域名。主机名映射到 IP 地址,但是主机名和 IP 地址之间没有一对一关系。

当 Web 客户机发出到主机的 HTTP 请求时,使用主机名。发出请求的用户可能会指定服务器的 IP 地址,而不是主机名,但现在这在因特网上不常见。对于用户来说,主机名比数字 IP 地址更方便。公司、组织和个人常常选择其 Web 站点的主机名,用户能很容易地记住这些主机名。

现代 HTTP 实施中更重要的是,在 HTTP 请求中使用主机名意味着:

一个主机名中的服务可以由许多服务器提供,它们有不同的 IP 地址。

具有一个 IP 地址的一台服务器可以提供许多主机名中的服务。这称为虚拟主管。虚拟主管说明此过程。

主机名由称为 DNS 服务器或域名服务器的服务器映射到 IP 地址。DNS 代表域名服务。在大型网络中,许多 DNS 服务器可以相互协作,以提供主机名和 IP 地址之间的映射。

域名服务 Domain Name Service ↑

DNS是一个Internet和TCP/IP的服务,用于映射网络地址号码。例如,191. 31.140.115映射为好记的名字,如tbones.acme.com.Internet。TCP/IP的实用工具如telnet文件传输协议 (FTP)和简单邮件传输协议(SMTP)也通过访问DNS来确定你所指定的名字,并将其分解为网络地址。当选择了一个名字后,DNS将该名字翻译为一个数字地址,并将其插入到传输的信息中。DNS的一个重要特点是,其地址信息是存在一个层次结构的多个地方,而不是在一个中心站点。每个场所都有一个域名服务器,来维护本地节点的信息。

域和DNS随着Internet的发展而被引入其中。其结构是一棵具有许多分支子树的分层树,如图D-26所示,该图示意的是Internet的一部分。在分层的文件系统中,一个目录具有许多子目录,以同样的方式,你可以想象DNS的这棵树。从树的顶层,有时也叫根层,被分支为几个主要的分支,叫做域,下列是一些顶层Internet的域:

GOV=政府部门

EDU=教育机构

ORG=组织(非盈利型或非商业型)

COM=商业

MIL=军事

NET=网络服务供给者

也有国家域,如CA(加拿大)、UK(英国)、JP(日本)、DE(德国)、AU(澳大利亚),在US(美国)域中,对50个州中的每一个都有一个两字母的代码名。这些域由那些局限于一个国家的公司或组织命名用。而国际性公司使用COM域。

Setting Up DNS 建立 DNS

要加入一个域,你首先要与管理该域的组织联系。每个场所必须提供一个名字服务器,存有能被网上其它计算机查询的DNS信息。你也可以从许多商业的Internet服务提供者中得到一个为你运行的名字服务器。于是你所要做的事就是为你域中的用户提供到该服务提供者的连接。

当你写一个DNS名字时,应将主机名写在左边,接下来写各层域名,一直到根。例如,为寻址在国家科学基金会(NSF)中的科学与信息技术系统(STIS),你应使用下列地址:

stis.nsf.gov

作为一个例子,假设你是一个大的叫做XYZ的跨国公司,并且你希望与Internet连接。你先与com域联系,要求一个场所登记。你还要建立一台计算机来为你公司域中的用户处理命名服务。这个系统与最近的Internet访问域取得联系。如果是一个小公司的话,也可只建立一条到服务提供者的链路,成为提供者域中的一部分。不管哪种方法,只要寻址是正确的,电子函件和其它传输信息最终都能通过网络找到到目的地的路径。

Running Local DNS Servers运行本地 DNS服务器

以上DNS讨论大部分是关于作为全球Internet网的域和命字。一个组织的内部命名结构也可参照同样的模式,但要包括部门或分部域。应建立一台或多台计算机来管理DNS命名。DNS是一个能驻留在几个不同服务器上的分布式数据库,以防系统崩溃。下面讨论主DNS服务器和辅DNS服务器:

主DNS服务器 这是主要的服务器,它在内存和磁盘上都保持有整个数据库的拷贝。如果系统崩溃,该数据库能重载到内存中。

辅DNS服务器 这是辅助DNS服务器,它获得一份来自主DNS服务器的数据库备份。当主服务器作修改时,辅服务器也要求作相应修改。

按这种方式来分布数据库有几个优点。首先,如果网络跨城市、国家并需要广域电信链路,你通过在每个地方放一份数据库的备份,使那些昂贵的广域链路上的通信量减小。用户通过查询本地的数据库备份来搜索资源和其它用户。其次,数据库的分布化还提供了容错能力。但每个数据服务器必须有自己的电源,并位于不会受火灾、洪水、地震之类灾害威胁的理想区域中。

Internet组织正致力于采用X.500目录服务标准,因为它具有DNS中所没有的功能。例如,X.500提供了名字查询服务,能返回关于用户和资源的信息,如物理地址、电话号码等。

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » 怎么用python连接mysql数据库

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情