急!!用python连接数据库

急!!用python连接数据库,第1张

settingspy

if DEBUG:

DATABASES = {

'default': {

'ENGINE': 'mysql', # Add 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'

'NAME': '库名', # Or path to database file if using sqlite3

'USER': 'root', # Not used with sqlite3

'PASSWORD': '', # Not used with sqlite3

'HOST': '', # Set to empty string for localhost Not used with sqlite3

'PORT': '3306', # Set to empty string for default Not used with sqlite3

},

'库名': {

'ENGINE': 'mysql', # Add 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'

'NAME': '库名', # Or path to database file if using sqlite3

'USER': 'root', # Not used with sqlite3

'PASSWORD': '', # Not used with sqlite3

'HOST': '', # Set to empty string for localhost Not used with sqlite3

'PORT': '3306', # Set to empty string for default Not used with sqlite3

}

}

MySQLdbconnect是python 连接MySQL数据库的方法,在Python中 import MySQLdb即可使用,至于connect中的参数很简单:\x0d\host:MySQL服务器名\x0d\user:数据库使用者\x0d\password:用户登录密码\x0d\db: *** 作的数据库名\x0d\charset:使用的字符集(一般是gb2312)\x0d\cursor = dbcursor() 其实就是用来获得python执行Mysql命令的方法,也就是\x0d\我们所说的 *** 作游标\x0d\下面cursorexecute则是真正执行MySQL语句,即查询TABLE_PARAMS表的数据。\x0d\至于fetchall()则是接收全部的返回结果行 row就是在python中定义的一个变量,用来接收返回结果行的每行数据。同样后面的r也是一个变量,用来接收row中的每个字符,如果写成C的形式就更好理解了\x0d\for(string row = ''; row回答于 2022-11-16

1、python安装目录设定为d:/python34

2、pymysql安装方法为:解压下载的文件,在cmd中运行: python setuppy install。

检验安装安装是否成功的方法:import pymysql 。 如果不报错 说明安装成功。

3、mysql安装目录为D:/phpStudy/MySQL。为避免更多配置问题,可在启动phpstudy后,将其设为系统服务

4、基本 *** 作:

(1)导入pymysql: import pymysql

(2)连接数据库:

conn=pymysqlconnect(host='localhost',user='root',passwd='root',db='ere',charset='utf8')

务必注意各等号前面的内容!charset参数可避免中文乱码

(3)获取 *** 作游标:cur=conncursor()

(4)执行sql语句,插入记录:sta=curexecute("insert 语句") 执行成功后sta值为1。更新、删除语句与此类似。

(5)执行sql语句,查询记录:curexecute("select语句") 执行成功后cur变量中保存了查询结果记录集,然后再用循环打印结果:

for each in cur:

print(each[1]decode('utf-8')) # each[1] 表示当前游标所在行的的第2列值,如果是中文则需要处理编码

Python和MySQL是「两个国家的人」,他们互不相通,因而需要一个中间代理,让双方互通有无,跟翻译一样(这比喻不准确,但足够你明白意思就行)。翻译又有很多选择,不同的翻译各有特色。

题主解决问题选择的翻译是「flask-mysqldb」,其背后的主子是「MySQL-python」。恩,说到这里你应该知道,「flask-xxx」这样的包都是对背后主子进行了适合Flask封装的插件,跟包子皮一样,里面的馅才是重点,「flask-mysqldb」的馅是「MySQL-python」。

而我要推荐的是另一个翻译:PyMySQL,这玩意的好处是可以做异步(「MySQL-python」也可以,个人口味罢了),简而言之,网站访问量大了就需要考虑异步,现在别管这是啥子。这玩意的安装方式是:

pip install PyMySQL

之后,数据库连接由:

mysql://username:password@server/db

改为

mysql+pymysql://username:password@server/db

就可以了。

1、python安装目录设定为d:/python34

2、pymysql安装方法为:解压下载的文件,在cmd中运行: python setuppy install。

检验安装安装是否成功的方法:import pymysql 。 如果不报错 说明安装成功。

3、mysql安装目录为D:/phpStudy/MySQL。为避免更多配置问题,可在启动phpstudy后,将其设为系统服务

4、基本 *** 作:

(1)导入pymysql: import pymysql

(2)连接数据库:

conn=pymysqlconnect(host='localhost',user='root',passwd='root',db='ere',charset='utf8')

务必注意各等号前面的内容!charset参数可避免中文乱码

(3)获取 *** 作游标:cur=conncursor()

(4)执行sql语句,插入记录:sta=curexecute("insert 语句") 执行成功后sta值为1。更新、删除语句与此类似。

(5)执行sql语句,查询记录:curexecute("select语句") 执行成功后cur变量中保存了查询结果记录集,然后再用循环打印结果:

for each in cur:

print(each[1]decode('utf-8')) # each[1] 表示当前游标所在行的的第2列值,如果是中文则需要处理编码

#连接数据库

conn = MySQLdbConnect(

host = 'localhost',

port = 3306,

user = 'root',

passwd = '',

db = 'mytest',

charset = 'utf8'

)

cursor = conncursor()

#创建一个表存储数据

sql_create = "create table if not exists account(nameid int, money varchar(100)) "

#插入两条数据

sql_insert1 = "insert into account(nameid,money) values(13,120)"

sql_insert2 = "insert into account(nameid,money) values(14,10)"

#执行上述sql语句

cursorexecute(sql_create)

cursorexecute(sql_insert1)

cursorexecute(sql_insert2)

connclose()

由于版本的不同,Python 连接 Hive 的方式也就不一样。

在网上搜索关键字 python hive 的时候可以找到一些解决方案。大部分是这样的,首先把hive 根目录下的$HIVE_HOME/lib/py拷贝到 python 的库中,也就是 site-package 中,或者干脆把新写的 python 代码和拷贝的 py 库放在同一个目录下,然后用这个目录下提供的 thrift 接口调用。示例也是非常简单的。类似这样:

import sys

from hive_service import ThriftHive

from hive_servicettypes import HiveServerException

from thrift import Thrift

from thrifttransport import TSocket

from thrifttransport import TTransport

from thriftprotocol import TBinaryProtocol

def hiveExe(sql):

try:

transport = TSocketTSocket('127001', 10000)

transport = TTransportTBufferedTransport(transport)

protocol = TBinaryProtocolTBinaryProtocol(transport)

client = ThriftHiveClient(protocol)

transportopen()

clientexecute(sql)

print "The return value is : "

print clientfetchAll()

print ""

transportclose()

except ThriftTException, tx:

print '%s' % (txmessage)

if __name__ == '__main__':

hiveExe("show tables")1234567891011121314151617181920212223242526272812345678910111213141516171819202122232425262728

或者是这样的:

#!/usr/bin/env python

import sys

from hive import ThriftHive

from hivettypes import HiveServerException

from thrift import Thrift

from thrifttransport import TSocket

from thrifttransport import TTransport

from thriftprotocol import TBinaryProtocol

try:

transport = TSocketTSocket('1418154188', 10000)

transport = TTransportTBufferedTransport(transport)

protocol = TBinaryProtocolTBinaryProtocol(transport)

client = ThriftHiveClient(protocol)

transportopen()

clientexecute("CREATE TABLE r(a STRING, b INT, c DOUBLE)")

clientexecute("LOAD TABLE LOCAL INPATH '/path' INTO TABLE r")

clientexecute("SELECT FROM test1")

while (1):

row = clientfetchOne()

if (row == None):

break

print rowve

clientexecute("SELECT FROM test1")

print clientfetchAll()

transportclose()

except ThriftTException, tx:

print '%s' % (txmessage)

12345678910111213141516171819202122232425262728293031323334351234567891011121314151617181920212223242526272829303132333435

但是都解决不了问题,从 netstat 中查看可以发现 TCP 连接确实是建立了,但是不执行 hive 指令。也许就是版本的问题。

还是那句话,看各种中文博客不如看官方文档。

项目中使用的 hive 版本是013,此时此刻官网的最新版本都到了121了。中间间隔了120、110、100、0140。但是还是参考一下官网的方法试试吧。

首先看官网的 setting up hiveserver2

可以看到启动 hiveserver2 可以配置最大最小线程数,绑定的 IP,绑定的端口,还可以设置认证方式。(之前一直不成功正式因为这个连接方式)然后还给了 python 示例代码。

import pyhs2

with pyhs2connect(host='localhost',

port=10000,

authMechanism="PLAIN",

user='root',

password='test',

database='default') as conn:

with conncursor() as cur:

#Show databases

print curgetDatabases()

#Execute query

curexecute("select from table")

#Return column info from query

print curgetSchema()

#Fetch table results

for i in curfetch():

print i123456789101112131415161718192021123456789101112131415161718192021

在拿到这个代码的时候,自以为是的把认证信息给去掉了。然后运行发现跟之前博客里介绍的方法结果一样,建立了 TCP 连接,但是就是不执行,也不报错。这是几个意思?然后无意中尝试了一下原封不动的使用上面的代码。结果可以用。唉。。。

首先声明一下,hive-sitexml中默认关于 hiveserver2的配置我一个都没有修改,一直是默认配置启动 hiveserver2。没想到的是默认配置是有认证机制的。

以上就是关于急!!用python连接数据库全部的内容,包括:急!!用python连接数据库、python连接MySQL数据库问题 cursor( ) 、execute()和fetc、python如何使用pymysql连接数据库封装类等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/10190442.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-06
下一篇2023-05-06

发表评论

登录后才能评论

评论列表(0条)

    保存